A non-blocking concurrency framework for PHP applications. 🐘
NativeDriver
could result in timers being executed out of order (#332)NativeDriver
when only signal watchers were enabledAmp\Iterator\discard()
(#315)NativeDriver
that are disabled and re-enabled during callback invocation (#325)Loop::now()
/ Driver::now()
is no longer cached in each tickDelayed::reference()
/ Delayed::unreference()
after the promise resolvedDelayed::reference()
/ Delayed::unreference()
to self
to allow fluid API usageAmp\Promise\wait
Amp\call
/ Amp\coroutine
Amp\call
Deferred::resolve()
(#307)stream_select()
fails but error_get_last()
returns null.getCurrentTime()
as public API, providing millisecond timestamps for runtime measurements with special support for 32 bit systems. Returned timestamps are relative to an arbitrary point in time, so this API is only suitable to compare two timestamps generated in the same process.TracingDriver
TracingDriver
not overriding all methods.TracingDriver
to debug (hanging) tests / applications. The environment variable AMP_DEBUG_TRACE_WATCHERS=true
can be set to automatically create a TracingDriver
wrapping the actual driver. TracingDriver::dump()
can be used to dump all enabled, referenced watchers keeping the loop running.