~ubuntu-branches/ubuntu/vivid/php-apcu/vivid

« back to all changes in this revision

Viewing changes to apcu-4.0.4/tests/bug63224.phpt

  • Committer: Package Import Robot
  • Author(s): Ondřej Surý
  • Date: 2014-06-24 10:52:52 UTC
  • mfrom: (7.1.4 sid)
  • Revision ID: package-import@ubuntu.com-20140624105252-vsqs1r4og4ykucqg
Tags: 4.0.6-1
* New upstream version 4.0.6
* Remove PHP 5.6 support patch - merged upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
--TEST--
2
 
APC: Bug #63224 error in __sleep whit reference to other classes
3
 
--SKIPIF--
4
 
<?php
5
 
    require_once(dirname(__FILE__) . '/skipif.inc'); 
6
 
        if (!extension_loaded("session")) die("skip");
7
 
    if (PHP_MAJOR_VERSION < 5 || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 4)) {
8
 
                die('skip PHP 5.4+ only');
9
 
        }
10
 
--FILE--
11
 
<?php
12
 
include "server_test.inc";
13
 
 
14
 
$file = <<<FL
15
 
session_start();
16
 
 
17
 
class A{
18
 
        public \$b;
19
 
        
20
 
        public function __sleep(){
21
 
                \$this->b->f();
22
 
                return array('b');
23
 
        }
24
 
}
25
 
 
26
 
 
27
 
class B{
28
 
        const A_CONSTANT = 1;
29
 
        public \$var;
30
 
 
31
 
        public function f(){
32
 
                \$this->var = self::A_CONSTANT;
33
 
        }
34
 
}
35
 
 
36
 
 
37
 
if(isset(\$_SESSION['lalala'])){
38
 
        echo "<pre>";
39
 
        \$a = \$_SESSION['lalala'];
40
 
        print_r(\$a);
41
 
} else {
42
 
        echo "no session yet, first run\n";
43
 
}
44
 
 
45
 
//      another file
46
 
//      class A and B use autoload
47
 
\$b = new B();
48
 
\$a = new A();
49
 
\$a->b = \$b;
50
 
 
51
 
\$_SESSION['lalala'] = \$a;
52
 
session_write_close();
53
 
FL;
54
 
 
55
 
$args = array(
56
 
        'apc.enabled=1',
57
 
        'apc.cache_by_default=1',
58
 
        'apc.enable_cli=1',
59
 
);
60
 
 
61
 
server_start($file, $args);
62
 
 
63
 
$sid = md5(uniqid("call me maybe", true));
64
 
for ($i = 0; $i < 10; $i++) {
65
 
        $send = "GET / HTTP/1.1\n" .
66
 
                        "Host: " . PHP_CLI_SERVER_HOSTNAME . "\n" .
67
 
                        "Cookie: PHPSESSID=$sid;" .
68
 
                        "\r\n\r\n";
69
 
        for ($j = 0; $j < $num_servers; $j++) {
70
 
                run_test(PHP_CLI_SERVER_HOSTNAME, PHP_CLI_SERVER_PORT+$j, $send);
71
 
        }
72
 
}
73
 
echo 'done';
74
 
--EXPECT--
75
 
no session yet, first run
76
 
<pre>A Object
77
 
(
78
 
    [b] => B Object
79
 
        (
80
 
            [var] => 1
81
 
        )
82
 
 
83
 
)
84
 
<pre>A Object
85
 
(
86
 
    [b] => B Object
87
 
        (
88
 
            [var] => 1
89
 
        )
90
 
 
91
 
)
92
 
<pre>A Object
93
 
(
94
 
    [b] => B Object
95
 
        (
96
 
            [var] => 1
97
 
        )
98
 
 
99
 
)
100
 
<pre>A Object
101
 
(
102
 
    [b] => B Object
103
 
        (
104
 
            [var] => 1
105
 
        )
106
 
 
107
 
)
108
 
<pre>A Object
109
 
(
110
 
    [b] => B Object
111
 
        (
112
 
            [var] => 1
113
 
        )
114
 
 
115
 
)
116
 
<pre>A Object
117
 
(
118
 
    [b] => B Object
119
 
        (
120
 
            [var] => 1
121
 
        )
122
 
 
123
 
)
124
 
<pre>A Object
125
 
(
126
 
    [b] => B Object
127
 
        (
128
 
            [var] => 1
129
 
        )
130
 
 
131
 
)
132
 
<pre>A Object
133
 
(
134
 
    [b] => B Object
135
 
        (
136
 
            [var] => 1
137
 
        )
138
 
 
139
 
)
140
 
<pre>A Object
141
 
(
142
 
    [b] => B Object
143
 
        (
144
 
            [var] => 1
145
 
        )
146
 
 
147
 
)
148
 
<pre>A Object
149
 
(
150
 
    [b] => B Object
151
 
        (
152
 
            [var] => 1
153
 
        )
154
 
 
155
 
)
156
 
<pre>A Object
157
 
(
158
 
    [b] => B Object
159
 
        (
160
 
            [var] => 1
161
 
        )
162
 
 
163
 
)
164
 
<pre>A Object
165
 
(
166
 
    [b] => B Object
167
 
        (
168
 
            [var] => 1
169
 
        )
170
 
 
171
 
)
172
 
<pre>A Object
173
 
(
174
 
    [b] => B Object
175
 
        (
176
 
            [var] => 1
177
 
        )
178
 
 
179
 
)
180
 
<pre>A Object
181
 
(
182
 
    [b] => B Object
183
 
        (
184
 
            [var] => 1
185
 
        )
186
 
 
187
 
)
188
 
<pre>A Object
189
 
(
190
 
    [b] => B Object
191
 
        (
192
 
            [var] => 1
193
 
        )
194
 
 
195
 
)
196
 
<pre>A Object
197
 
(
198
 
    [b] => B Object
199
 
        (
200
 
            [var] => 1
201
 
        )
202
 
 
203
 
)
204
 
<pre>A Object
205
 
(
206
 
    [b] => B Object
207
 
        (
208
 
            [var] => 1
209
 
        )
210
 
 
211
 
)
212
 
<pre>A Object
213
 
(
214
 
    [b] => B Object
215
 
        (
216
 
            [var] => 1
217
 
        )
218
 
 
219
 
)
220
 
<pre>A Object
221
 
(
222
 
    [b] => B Object
223
 
        (
224
 
            [var] => 1
225
 
        )
226
 
 
227
 
)
228
 
<pre>A Object
229
 
(
230
 
    [b] => B Object
231
 
        (
232
 
            [var] => 1
233
 
        )
234
 
 
235
 
)
236
 
<pre>A Object
237
 
(
238
 
    [b] => B Object
239
 
        (
240
 
            [var] => 1
241
 
        )
242
 
 
243
 
)
244
 
<pre>A Object
245
 
(
246
 
    [b] => B Object
247
 
        (
248
 
            [var] => 1
249
 
        )
250
 
 
251
 
)
252
 
<pre>A Object
253
 
(
254
 
    [b] => B Object
255
 
        (
256
 
            [var] => 1
257
 
        )
258
 
 
259
 
)
260
 
<pre>A Object
261
 
(
262
 
    [b] => B Object
263
 
        (
264
 
            [var] => 1
265
 
        )
266
 
 
267
 
)
268
 
<pre>A Object
269
 
(
270
 
    [b] => B Object
271
 
        (
272
 
            [var] => 1
273
 
        )
274
 
 
275
 
)
276
 
<pre>A Object
277
 
(
278
 
    [b] => B Object
279
 
        (
280
 
            [var] => 1
281
 
        )
282
 
 
283
 
)
284
 
<pre>A Object
285
 
(
286
 
    [b] => B Object
287
 
        (
288
 
            [var] => 1
289
 
        )
290
 
 
291
 
)
292
 
<pre>A Object
293
 
(
294
 
    [b] => B Object
295
 
        (
296
 
            [var] => 1
297
 
        )
298
 
 
299
 
)
300
 
<pre>A Object
301
 
(
302
 
    [b] => B Object
303
 
        (
304
 
            [var] => 1
305
 
        )
306
 
 
307
 
)
308
 
done