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 — Lit un résultat PostgreSQL asynchrone
Description
resource pg_get_result
([ resource $connection
] )
pg_get_result() lit la ressource de résultat d'une requête asynchrone exécutée par pg_send_query(), pg_send_query_params() ou pg_send_execute().
pg_send_query() et les autres fonctions de requête asynchrone peuvent envoyer plusieurs requêtes à un serveur PostgreSQL et pg_get_result() est utilisé pour obtenir chaque résultat de requête, un par un.
Liste de paramètres
- connection
-
Ressource de connexion de base de données PostgreSQL.
Valeurs de retour
La resource de résultat ou FALSE s'il n'y a plus de résultat disponible.
Exemples
Exemple #1 Exemple avec pg_get_result()
<?php
$dbconn = pg_connect("dbname=publisher") or die("Connexion impossible");
if (!pg_connection_busy($dbconn)) {
pg_send_query($dbconn, "select * from auteurs; select count(*) from auteurs;");
}
$res1 = pg_get_result($dbconn);
echo "Premier appel à pg_get_result(): $res1\n";
$rows1 = pg_num_rows($res1);
echo "$res1 a $rows1 enregistrements\n\n";
$res2 = pg_get_result($dbconn);
echo "Second appel à pg_get_result(): $res2\n";
$rows2 = pg_num_rows($res2);
echo "$res2 a $rows2 enregistrements\n";
?>
L'exemple ci-dessus va afficher :
Premier appel à pg_get_result(): Resource id #3 Resource id #3 a 3 enregistrements Second appel à pg_get_result(): Resource id #4 Resource id #4 a 1 enregistrements
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.
