1--TEST--
2Test flock() function: Variations
3--FILE--
4<?php
5/*
6Prototype: bool flock(resource $handle, int $operation [, int &$wouldblock]);
7Description: PHP supports a portable way of locking complete files
8  in an advisory way
9*/
10
11echo "*** Testing flock() fun with the various operation and
12            wouldblock values                                ***\n";
13
14$file = preg_replace("~\.phpt?$~", null, __FILE__);
15$fp = fopen($file, "w");
16
17/* array of operatons */
18$operations = array(
19  LOCK_SH,
20  LOCK_EX,
21  LOCK_SH|LOCK_NB,
22  LOCK_EX|LOCK_NB,
23  LOCK_SH|LOCK_EX,
24  LOCK_UN,
25  1,
26  2,
27  2.234,
28  TRUE
29);
30
31/* array of wouldblocks */
32$wouldblocks = array(
33  0,
34  1,
35  2,
36  1.234,
37  TRUE,
38  FALSE,
39  NULL,
40  array(1,2,3),
41  array(),
42  "string",
43  "",
44  /* binary input */
45  b"string",
46  b"",
47  "\0"
48);
49
50$i = 0;
51foreach($operations as $operation) {
52  echo "--- Outer iteration $i ---\n";
53  var_dump(flock($fp, $operation));
54  $j = 0;
55  foreach($wouldblocks as $wouldblock) {
56    echo "-- Inner iteration $j in $i --\n";
57    var_dump(flock($fp, $operation, $wouldblock));
58    $j++;
59  }
60  $i++;
61}
62
63fclose($fp);
64@unlink($file);
65
66echo "\n*** Done ***\n";
67?>
68--EXPECT--
69*** Testing flock() fun with the various operation and
70            wouldblock values                                ***
71--- Outer iteration 0 ---
72bool(true)
73-- Inner iteration 0 in 0 --
74bool(true)
75-- Inner iteration 1 in 0 --
76bool(true)
77-- Inner iteration 2 in 0 --
78bool(true)
79-- Inner iteration 3 in 0 --
80bool(true)
81-- Inner iteration 4 in 0 --
82bool(true)
83-- Inner iteration 5 in 0 --
84bool(true)
85-- Inner iteration 6 in 0 --
86bool(true)
87-- Inner iteration 7 in 0 --
88bool(true)
89-- Inner iteration 8 in 0 --
90bool(true)
91-- Inner iteration 9 in 0 --
92bool(true)
93-- Inner iteration 10 in 0 --
94bool(true)
95-- Inner iteration 11 in 0 --
96bool(true)
97-- Inner iteration 12 in 0 --
98bool(true)
99-- Inner iteration 13 in 0 --
100bool(true)
101--- Outer iteration 1 ---
102bool(true)
103-- Inner iteration 0 in 1 --
104bool(true)
105-- Inner iteration 1 in 1 --
106bool(true)
107-- Inner iteration 2 in 1 --
108bool(true)
109-- Inner iteration 3 in 1 --
110bool(true)
111-- Inner iteration 4 in 1 --
112bool(true)
113-- Inner iteration 5 in 1 --
114bool(true)
115-- Inner iteration 6 in 1 --
116bool(true)
117-- Inner iteration 7 in 1 --
118bool(true)
119-- Inner iteration 8 in 1 --
120bool(true)
121-- Inner iteration 9 in 1 --
122bool(true)
123-- Inner iteration 10 in 1 --
124bool(true)
125-- Inner iteration 11 in 1 --
126bool(true)
127-- Inner iteration 12 in 1 --
128bool(true)
129-- Inner iteration 13 in 1 --
130bool(true)
131--- Outer iteration 2 ---
132bool(true)
133-- Inner iteration 0 in 2 --
134bool(true)
135-- Inner iteration 1 in 2 --
136bool(true)
137-- Inner iteration 2 in 2 --
138bool(true)
139-- Inner iteration 3 in 2 --
140bool(true)
141-- Inner iteration 4 in 2 --
142bool(true)
143-- Inner iteration 5 in 2 --
144bool(true)
145-- Inner iteration 6 in 2 --
146bool(true)
147-- Inner iteration 7 in 2 --
148bool(true)
149-- Inner iteration 8 in 2 --
150bool(true)
151-- Inner iteration 9 in 2 --
152bool(true)
153-- Inner iteration 10 in 2 --
154bool(true)
155-- Inner iteration 11 in 2 --
156bool(true)
157-- Inner iteration 12 in 2 --
158bool(true)
159-- Inner iteration 13 in 2 --
160bool(true)
161--- Outer iteration 3 ---
162bool(true)
163-- Inner iteration 0 in 3 --
164bool(true)
165-- Inner iteration 1 in 3 --
166bool(true)
167-- Inner iteration 2 in 3 --
168bool(true)
169-- Inner iteration 3 in 3 --
170bool(true)
171-- Inner iteration 4 in 3 --
172bool(true)
173-- Inner iteration 5 in 3 --
174bool(true)
175-- Inner iteration 6 in 3 --
176bool(true)
177-- Inner iteration 7 in 3 --
178bool(true)
179-- Inner iteration 8 in 3 --
180bool(true)
181-- Inner iteration 9 in 3 --
182bool(true)
183-- Inner iteration 10 in 3 --
184bool(true)
185-- Inner iteration 11 in 3 --
186bool(true)
187-- Inner iteration 12 in 3 --
188bool(true)
189-- Inner iteration 13 in 3 --
190bool(true)
191--- Outer iteration 4 ---
192bool(true)
193-- Inner iteration 0 in 4 --
194bool(true)
195-- Inner iteration 1 in 4 --
196bool(true)
197-- Inner iteration 2 in 4 --
198bool(true)
199-- Inner iteration 3 in 4 --
200bool(true)
201-- Inner iteration 4 in 4 --
202bool(true)
203-- Inner iteration 5 in 4 --
204bool(true)
205-- Inner iteration 6 in 4 --
206bool(true)
207-- Inner iteration 7 in 4 --
208bool(true)
209-- Inner iteration 8 in 4 --
210bool(true)
211-- Inner iteration 9 in 4 --
212bool(true)
213-- Inner iteration 10 in 4 --
214bool(true)
215-- Inner iteration 11 in 4 --
216bool(true)
217-- Inner iteration 12 in 4 --
218bool(true)
219-- Inner iteration 13 in 4 --
220bool(true)
221--- Outer iteration 5 ---
222bool(true)
223-- Inner iteration 0 in 5 --
224bool(true)
225-- Inner iteration 1 in 5 --
226bool(true)
227-- Inner iteration 2 in 5 --
228bool(true)
229-- Inner iteration 3 in 5 --
230bool(true)
231-- Inner iteration 4 in 5 --
232bool(true)
233-- Inner iteration 5 in 5 --
234bool(true)
235-- Inner iteration 6 in 5 --
236bool(true)
237-- Inner iteration 7 in 5 --
238bool(true)
239-- Inner iteration 8 in 5 --
240bool(true)
241-- Inner iteration 9 in 5 --
242bool(true)
243-- Inner iteration 10 in 5 --
244bool(true)
245-- Inner iteration 11 in 5 --
246bool(true)
247-- Inner iteration 12 in 5 --
248bool(true)
249-- Inner iteration 13 in 5 --
250bool(true)
251--- Outer iteration 6 ---
252bool(true)
253-- Inner iteration 0 in 6 --
254bool(true)
255-- Inner iteration 1 in 6 --
256bool(true)
257-- Inner iteration 2 in 6 --
258bool(true)
259-- Inner iteration 3 in 6 --
260bool(true)
261-- Inner iteration 4 in 6 --
262bool(true)
263-- Inner iteration 5 in 6 --
264bool(true)
265-- Inner iteration 6 in 6 --
266bool(true)
267-- Inner iteration 7 in 6 --
268bool(true)
269-- Inner iteration 8 in 6 --
270bool(true)
271-- Inner iteration 9 in 6 --
272bool(true)
273-- Inner iteration 10 in 6 --
274bool(true)
275-- Inner iteration 11 in 6 --
276bool(true)
277-- Inner iteration 12 in 6 --
278bool(true)
279-- Inner iteration 13 in 6 --
280bool(true)
281--- Outer iteration 7 ---
282bool(true)
283-- Inner iteration 0 in 7 --
284bool(true)
285-- Inner iteration 1 in 7 --
286bool(true)
287-- Inner iteration 2 in 7 --
288bool(true)
289-- Inner iteration 3 in 7 --
290bool(true)
291-- Inner iteration 4 in 7 --
292bool(true)
293-- Inner iteration 5 in 7 --
294bool(true)
295-- Inner iteration 6 in 7 --
296bool(true)
297-- Inner iteration 7 in 7 --
298bool(true)
299-- Inner iteration 8 in 7 --
300bool(true)
301-- Inner iteration 9 in 7 --
302bool(true)
303-- Inner iteration 10 in 7 --
304bool(true)
305-- Inner iteration 11 in 7 --
306bool(true)
307-- Inner iteration 12 in 7 --
308bool(true)
309-- Inner iteration 13 in 7 --
310bool(true)
311--- Outer iteration 8 ---
312bool(true)
313-- Inner iteration 0 in 8 --
314bool(true)
315-- Inner iteration 1 in 8 --
316bool(true)
317-- Inner iteration 2 in 8 --
318bool(true)
319-- Inner iteration 3 in 8 --
320bool(true)
321-- Inner iteration 4 in 8 --
322bool(true)
323-- Inner iteration 5 in 8 --
324bool(true)
325-- Inner iteration 6 in 8 --
326bool(true)
327-- Inner iteration 7 in 8 --
328bool(true)
329-- Inner iteration 8 in 8 --
330bool(true)
331-- Inner iteration 9 in 8 --
332bool(true)
333-- Inner iteration 10 in 8 --
334bool(true)
335-- Inner iteration 11 in 8 --
336bool(true)
337-- Inner iteration 12 in 8 --
338bool(true)
339-- Inner iteration 13 in 8 --
340bool(true)
341--- Outer iteration 9 ---
342bool(true)
343-- Inner iteration 0 in 9 --
344bool(true)
345-- Inner iteration 1 in 9 --
346bool(true)
347-- Inner iteration 2 in 9 --
348bool(true)
349-- Inner iteration 3 in 9 --
350bool(true)
351-- Inner iteration 4 in 9 --
352bool(true)
353-- Inner iteration 5 in 9 --
354bool(true)
355-- Inner iteration 6 in 9 --
356bool(true)
357-- Inner iteration 7 in 9 --
358bool(true)
359-- Inner iteration 8 in 9 --
360bool(true)
361-- Inner iteration 9 in 9 --
362bool(true)
363-- Inner iteration 10 in 9 --
364bool(true)
365-- Inner iteration 11 in 9 --
366bool(true)
367-- Inner iteration 12 in 9 --
368bool(true)
369-- Inner iteration 13 in 9 --
370bool(true)
371
372*** Done ***
373