|
4 | 4 | //
|
5 | 5 | // Communication happens via newline-delimited JSON-RPC messages, see:
|
6 | 6 | // $ php res/sqlite-worker.php
|
7 |
| -// < {"id":0,"method":"open","params":["test.db"]} |
8 |
| -// > {"id":0,"result":true} |
| 7 | +// < {"id":1,"method":"open","params":["examples/users.db",null]} |
| 8 | +// > {"id":1,"result":true} |
| 9 | +// < {"id":2,"method":"query","params":["SELECT 42",[]]} |
| 10 | +// > {"id":2,"result":{"columns":["42"],"rows":[{"42":42}],"insertId":0,"changed":0}} |
| 11 | +// < {"id":3,"method":"query","params":["SELECT ? AS name",["Alice"]]} |
| 12 | +// > {"id":3,"result":{"columns":["name"],"rows":[{"name":"Alice"}],"insertId":0,"changed":0}} |
9 | 13 | //
|
10 | 14 | // Or via socket connection (used for Windows, which does not support non-blocking process pipe I/O)
|
11 | 15 | // $ nc localhost 8080
|
|
45 | 49 | });
|
46 | 50 |
|
47 | 51 | $in = new Decoder($through);
|
48 |
| - $out = new Encoder($stream); |
| 52 | + $out = new Encoder($stream, \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE | (\PHP_VERSION_ID >= 50606 ? \JSON_PRESERVE_ZERO_FRACTION : 0)); |
49 | 53 | } else {
|
50 | 54 | // no socket address given, use process I/O pipes
|
51 | 55 | $in = new Decoder(new ReadableResourceStream(\STDIN, $loop));
|
52 |
| - $out = new Encoder(new WritableResourceStream(\STDOUT, $loop)); |
| 56 | + $out = new Encoder(new WritableResourceStream(\STDOUT, $loop), \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE | (\PHP_VERSION_ID >= 50606 ? \JSON_PRESERVE_ZERO_FRACTION : 0)); |
53 | 57 | }
|
54 | 58 |
|
55 | 59 | // report error when input is invalid NDJSON
|
|
135 | 139 | foreach ($row as &$value) {
|
136 | 140 | if (\is_string($value) && \preg_match('/[\x00-\x08\x11\x12\x14-\x1f\x7f]/u', $value) !== 0) {
|
137 | 141 | $value = ['base64' => \base64_encode($value)];
|
138 |
| - } elseif (\is_float($value)) { |
| 142 | + } elseif (\is_float($value) && \PHP_VERSION_ID < 50606) { |
139 | 143 | $value = ['float' => $value];
|
140 | 144 | }
|
141 | 145 | }
|
|
0 commit comments