1--TEST--
2PostgreSQL non-blocking async connect
3--SKIPIF--
4<?php
5include("skipif.inc");
6?>
7--FILE--
8<?php
9
10include('config.inc');
11include('nonblocking.inc');
12
13if (!$db = pg_connect($conn_str, PGSQL_CONNECT_ASYNC)) {
14    die("pg_connect() error");
15} elseif (pg_connection_status($db) === PGSQL_CONNECTION_BAD) {
16    die("pg_connect() error");
17} elseif ($db_socket = pg_socket($db)) {
18    stream_set_blocking($db_socket, FALSE);
19} else {
20    die("pg_socket() error");
21}
22
23while (TRUE) {
24    switch ($status = pg_connect_poll($db)) {
25        case PGSQL_POLLING_READING:
26            nb_is_readable($db_socket);
27            break;
28        case PGSQL_POLLING_WRITING:
29            nb_is_writable($db_socket);
30            break;
31        case PGSQL_POLLING_FAILED:
32            die("async connection failed");
33        case PGSQL_POLLING_OK:
34            break 2;
35        default:
36            die("unknown poll status");
37    }
38}
39assert(pg_connection_status($db) === PGSQL_CONNECTION_OK);
40echo "OK";
41
42pg_close($db);
43
44?>
45--EXPECT--
46OK
47