This is really interesting, but I think use of "ticks" for asynchronous functions is bad approach. A month or two ago I published a PoC for safe interrupt handling.
https://github.com/php/php-src/compare/master...dstogov:interrupt Actually it's already partially committed to support timeout handling on Windows. This idea may be extended to implement cooperative-multitasking, asynchronous callbacks, signal handlers, etc... I didn't continue work on it yet, because it's too later for PHP-7.0 and I have a lot of other PHP-7 related work. If you like to implement MYSQLI_ASYNC PoC now - just include your ticks extension there. If we accept it, we will accept all together. Thanks. Dmitry. On Tue, Apr 7, 2015 at 5:56 PM, Andrey Hristov <p...@hristov.com> wrote: > 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 <p...@hristov.com >> <mailto:p...@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/0zhVNxaY >> >> Currently 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 >> >> >> >