Re: [PATCH] Tick functions (on C level) with state
| From: | Andrey Hristov | Date: | Tue, 07 Apr 2015 14:56:37 +0000 |
| Subject: | Re: [PATCH] Tick functions (on C level) with state | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-85741@lists.php.net to get a copy of this message | ||
Hi Dmitry,
On 7.04.2015 16:33, Dmitry Stogov wrote:
Hi Andrey, I didn't get why do you need this extension and how it's going to be used.I would like to implement (I have a PoC for this too), asynchronous query handlers in mysqli@mysqlnd. Currently it is possible to have some asynchronisity like $c = mysqli_query("....", MYSQLI_ASYNC); // do some work // poll with mysqli_poll // synchronise with mysqli_reap_async_query // fetch data I would like to skip the //poll and in some cases the //synchronise part and have $c = mysqli_query("....", MYSQLI_ASYNC, function () use ($c) {
$res = mysqli_reap_async_query($c);
// do something with the result
}
);
The closure can also set some global flag, and somewhere in the "main" thread it one can synchronize on it. It can also use [class, method] callback syntax. For example one can subclass class mysqli, add some status variables for state, and a method to pass to mysqli_query()/ mysqli::query().
mysqlnd registers a small tick function, that does select, and if there is data to be read the closure is called. Another closure for handling an error should be added too (but I don't have it my PoC).
Hope this helps to enlighten my intentions.
Best,
Andrey
Thanks. Dmitry. On Tue, Apr 7, 2015 at 4:43 PM, Andrey Hristov <php@hristov.com <mailto:php@hristov.com>> wrote:Hi, I would like to hear comments about a small change to the low-level tick functionality (main/php_ticks.c) to add state to when calling a C tick function The patch is alive at : http://pastebin.com/0zhVNxaYCurrently a C tick function gets as a parameter just the number of ticks, and can't preserve state between calls. On PHP level one can use closures to mitigate this, but in the C world we don't have this luxury.Any comments are very welcome. If possible to get in PHP7.Cheers, Andrey