greendrake / php-asyncprocess
ReactPHP Promise 实现的真正异步后台进程
1.0.0
2023-10-14 23:31 UTC
Requires
- php: >=8.2.0
- react/async: 4.x-dev
- react/http: 1.x-dev
- react/promise: 3.x-dev
Requires (Dev)
- phpunit/phpunit: 10
README
ReactPHP Promise 实现的真正异步后台进程。
此库允许以 ReactPHP Promise 形式在后台运行命令。非阻塞。仅在 Linux 上测试。
在底层,它这样工作
-
使用 pcntl_fork 创建一个子进程。这会运行指定的命令,并通过本地 HTTP 调用(使用一次性的 reactphp/http 服务器/客户端)将结果报告给父进程。
-
一旦父进程获取到结果,它就履行(或拒绝,取决于退出码)Promise。大功告成。
示例
use function React\Async\await; $p = new \Greendrake\AsyncProcess\Promise('a=$( expr 10 - 3 ); echo $a'); // Kick off the process in background. $result = await($p->get()); // Get the instance of React\Promise\Promise, wait for it to resolve. echo $result; // outputs "7"