PostgreSQL - Wait for async notifications with socket select pg_wait_notify
#720
+172
−102
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi,
This PR adds a php function
pg_wait_notify
similar to https://bugs.php.net/bug.php?id=44348, except that it usesselect
instead ofpoll
[differences seem moot for this use-case?]It's also based upon postgresql example code (http://www.postgresql.org/docs/9.3/static/libpq-example.html #2).
Issue:
If you're waiting for async notifications. You must continually call
pg_get_notify
, with interleaved calls tousleep
; which is inefficient.Example of current code (wait until any notifications arrive, and dump them. Only wait up to 30 seconds):
Solution:
Use something like
poll
orselect
with optional timeouts to save on resources.Example usage (wait until any notifications arrive, and dump them. Only wait up to 30 seconds)::
I'm making this requests against PHP-5.4, as it's backwards compatible - and if successful, I'll merge/port it forwards to 5.5, 5.6/devel