php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #44348 Wait for Postgres notifications
Submitted: 2008-03-06 00:32 UTC Modified: 2016-12-31 00:33 UTC
Votes:5
Avg. Score:3.2 ± 1.8
Reproduced:4 of 4 (100.0%)
Same Version:2 (50.0%)
Same OS:3 (75.0%)
From: p_ christ at hol dot gr Assigned:
Status: Open Package: PostgreSQL related
PHP Version: 5.2.5 OS: Linux
Private report: No CVE-ID: None
Have you experienced this issue?
Rate the importance of this bug to you:

 [2008-03-06 00:32 UTC] p_ christ at hol dot gr
Description:
------------
Add one more internal PHP function that will C-poll() the Postgres file descriptor for async events.


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2008-03-06 00:35 UTC] p_christ at hol dot gr
/* {{{ proto array pg_wait_notify([resource connection[, timeout]])
   Wait for postgres activity */
PHP_FUNCTION(pg_wait_notify)
{
	zval *pgsql_link;
	int id = -1;
	int retval = 0;
	int timeout = -1;
	struct pollfd ps;
	PGconn *pgsql;

	if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "r|l",
								 &pgsql_link, &timeout) == FAILURE) {
		RETURN_FALSE;
	}

	ZEND_FETCH_RESOURCE2(pgsql, PGconn *, &pgsql_link, id, "PostgreSQL link", le_link, le_plink);

	ps.fd = PQsocket(pgsql);
	ps.events = POLLIN;
	ps.revents = 0;
	
	if (ps.fd<0)
		RETURN_FALSE;
	
	retval = poll(&ps,1,timeout);


	if (retval == -1) {
		php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to poll : %d", errno);
		RETURN_FALSE;
	}

	RETURN_LONG(retval);
}
/* }}} */
 [2016-12-31 00:33 UTC] cmb@php.net
-Package: Feature/Change Request +Package: PostgreSQL related
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Mon Dec 16 05:01:25 2019 UTC