29nb_async_connect.phpt 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. --TEST--
  2. PostgreSQL non-blocking async connect
  3. --EXTENSIONS--
  4. pgsql
  5. --SKIPIF--
  6. <?php
  7. include("skipif.inc");
  8. ?>
  9. --FILE--
  10. <?php
  11. include('config.inc');
  12. include('nonblocking.inc');
  13. if (!$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. while (TRUE) {
  23. switch ($status = pg_connect_poll($db)) {
  24. case PGSQL_POLLING_READING:
  25. nb_is_readable($db_socket);
  26. break;
  27. case PGSQL_POLLING_WRITING:
  28. nb_is_writable($db_socket);
  29. break;
  30. case PGSQL_POLLING_FAILED:
  31. die("async connection failed");
  32. case PGSQL_POLLING_OK:
  33. break 2;
  34. default:
  35. die("unknown poll status");
  36. }
  37. }
  38. assert(pg_connection_status($db) === PGSQL_CONNECTION_OK);
  39. echo "OK";
  40. pg_close($db);
  41. ?>
  42. --EXPECT--
  43. OK