1--TEST--
2Test session_set_save_handler() function : variation
3--INI--
4session.use_strict_mode=1
5session.gc_probability=1
6session.gc_divisor=1
7session.gc_maxlifetime=0
8session.save_path=
9session.name=PHPSESSID
10session.save_handler=files
11--SKIPIF--
12<?php include('skipif.inc'); ?>
13--FILE--
14<?php
15
16ob_start();
17
18function noisy_gc($maxlifetime) {
19    echo("GC [".$maxlifetime."]\n");
20    echo gc($maxlifetime)." deleted\n";
21    return true;
22}
23
24echo "*** Testing session_set_save_handler() : variation ***\n";
25
26require_once "save_handler.inc";
27$path = __DIR__;
28var_dump(session_save_path($path));
29
30echo "*** Without lazy_write ***\n";
31var_dump(session_set_save_handler("open", "close", "read", "write", "destroy", "noisy_gc", "create_sid", "validate_sid", "update"));
32var_dump(session_start(['lazy_write'=>FALSE]));
33$session_id = session_id();
34var_dump(session_id());
35var_dump(session_write_close());
36var_dump(session_id());
37
38echo "*** With lazy_write ***\n";
39var_dump(session_id($session_id));
40var_dump(session_set_save_handler("open", "close", "read", "write", "destroy", "noisy_gc", "create_sid", "validate_sid", "update"));
41var_dump(session_start(['lazy_write'=>TRUE]));
42var_dump(session_commit());
43var_dump(session_id());
44
45echo "*** Cleanup ***\n";
46var_dump(session_id($session_id));
47var_dump(session_start());
48var_dump(session_destroy());
49
50ob_end_flush();
51?>
52--EXPECTF--
53*** Testing session_set_save_handler() : variation ***
54string(0) ""
55*** Without lazy_write ***
56bool(true)
57Open [%s,PHPSESSID]
58CreateID [PHPT-%d]
59Read [%s,PHPT-%d]
60GC [0]
611 deleted
62bool(true)
63string(%d) "PHPT-%d"
64Write [%s,PHPT-%d,]
65Close [%s,PHPSESSID]
66bool(true)
67string(%d) "PHPT-%d"
68*** With lazy_write ***
69string(%d) "PHPT-%d"
70bool(true)
71Open [%s,PHPSESSID]
72ValidateID [%s,PHPT-%d]
73Read [%s,PHPT-%d]
74GC [0]
751 deleted
76bool(true)
77Write [%s,PHPT-%d,]
78Close [%s,PHPSESSID]
79bool(true)
80string(%d) "PHPT-%d"
81*** Cleanup ***
82string(%d) "PHPT-%d"
83Open [%s,PHPSESSID]
84ValidateID [%s,PHPT-%d]
85Read [%s,PHPT-%d]
86GC [0]
871 deleted
88bool(true)
89Destroy [%s,PHPT-%d]
90
91Warning: unlink(%s): No such file or directory in %s on line %d
92Close [%s,PHPSESSID]
93bool(true)
94