/** * @param resource|object $handle * @throws InvalidArgumentException */ function async_stream_remove_write($handle) { $wrapper = AsyncStreamWrapper::getFromResource($handle); if (!$wrapper) { throw new InvalidArgumentException(); } $wrapper->setOptions("write_callback", null); }
/** * @param resource $handle * @return resource */ private function wrap($handle) { return AsyncStreamWrapper::make($handle); }
<?php use krinfreschi\AsyncStreams\AsyncStreamWrapper; require_once "vendor/autoload.php"; $resource = fopen('php://temp', 'r+'); $handle = AsyncStreamWrapper::make($resource); fwrite($handle, 'data'); async_stream_register_read($handle, function ($handle) { }); async_stream_register_write($handle, function ($handle, $written, $unwritten) { fseek($handle, 0); var_dump(stream_get_contents($handle)); fclose($handle); }); AsyncStreamWrapper::run();