29nb_async_connect.phpt 902 B

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