william at 25thandClement dot com said: "There is no way to poll/wait for a notification to come in. .."
Yes, there is. If there is a query in progress, pg_get_result() will block and return the result of that query when it's complete.
pg_get_result
(PHP 4 >= 4.2.0, PHP 5)
pg_get_result — Pobiera wynik zapytania asynchroniczego
Opis
resource pg_get_result
([ resource $polaczenie
] )
pg_get_result() zwraca wynik zapytania asynchronicznego uruchomionego przez pg_send_query(), pg_send_query_params() lub pg_send_execute().
pg_send_query() oraz inne funkcje zapytań asynchronicznych może wysyłać wiele zapytań do serwera PostgreSQL, natomiast pg_get_result() jest używana do pobierania wyników każdego zapytania po kolei.
Parametry
- polaczenie
-
Identyfikator połączenia z bazą PostgreSQL.
Zwracane wartości
Identyfikator wyniku (ang. resource), lub FALSE gdy brak więcej dostępnych wyników.
Przykłady
Przykład #1 pg_get_result() - przykład
<?php
$polaczenie = pg_connect("dbname=wydawca") or die("Nie można się połączyć");
if (!pg_connection_busy($polaczenie)) {
pg_send_query($polaczenie, "select * from autorzy; select count(*) from autorzy;");
}
$wyn1 = pg_get_result($polaczenie);
echo "Pierwsze wywołanie pg_get_result(): $wyn1\n";
$wiersze1 = pg_num_rows($wyn1);
echo "$wyn1 ma $wiersze1 rekordy(ów)\n\n";
$wyn2 = pg_get_result($polaczenie);
echo "Drugie wywołanie pg_get_result(): $wyn2\n";
$wiersze2 = pg_num_rows($wyn2);
echo "$wyn2 ma $wiersze2 rekordy(ów)\n";
?>
Powyższy przykład wyświetli:
Pierwsze wywołanie pg_get_result(): Resource id #3 Resource id #3 ma 3 rekordy(ów) Drugie wywołanie pg_get_result(): Resource id #4 Resource id #4 ma 1 rekordy(ów)
pg_get_result
Marko Tiikkaja
26-Oct-2008 12:14
26-Oct-2008 12:14
william at 25thandClement dot com
27-Jan-2005 11:03
27-Jan-2005 11:03
There is no way to poll/wait for a notification to come in. You either have to enter a busy loop or sleep. Both options are horrible. It would be nice for PHP to provide access to PQsocket so one could select() on the socket connection. This is how it's done from C or Perl.
