release 2.1.6
[m6w6/ext-pq] / tests / async008.phpt
1 --TEST--
2 async cursor
3 --SKIPIF--
4 <?php include "_skipif.inc"; ?>
5 --FILE--
6 <?php
7 echo "Test\n";
8 include "_setup.inc";
9
10 function complete($c) {
11 do {
12 while ($c->busy) {
13 $r = array($c->socket);
14 $w = $e = null;
15 if (stream_select($r, $w, $e, null)) {
16 $c->poll();
17 }
18 }
19 } while ($c->getResult());
20 }
21
22 $c = new pq\Connection(PQ_DSN);
23 $p = $c->declareAsync("mycursor", pq\Cursor::WITH_HOLD,
24 "SELECT * FROM generate_series(0,29) s WHERE (s%2)=0");
25 complete($c);
26
27 do {
28 $p->fetchAsync(2, function ($r) {
29 foreach ($r as $row) {
30 foreach ($row as $col) {
31 echo " $col";
32 }
33 echo "\n";
34 }
35 });
36 complete($p->connection);
37 $p->moveAsync(1, function ($r) use(&$keep_going) {
38 $keep_going = $r->affectedRows;
39 });
40 complete($p->connection);
41 } while ($keep_going);
42
43 ?>
44 ===DONE===
45 --EXPECT--
46 Test
47 0
48 2
49 6
50 8
51 12
52 14
53 18
54 20
55 24
56 26
57 ===DONE===