greendrake/php-asyncprocess

ReactPHP Promise 实现的真正异步后台进程

1.0.0 2023-10-14 23:31 UTC

This package is auto-updated.

Last update: 2024-09-15 01:28:31 UTC


README

ReactPHP Promise 实现的真正异步后台进程。

此库允许以 ReactPHP Promise 形式在后台运行命令。非阻塞。仅在 Linux 上测试。

在底层,它这样工作

  1. 使用 pcntl_fork 创建一个子进程。这会运行指定的命令,并通过本地 HTTP 调用(使用一次性的 reactphp/http 服务器/客户端)将结果报告给父进程。

  2. 一旦父进程获取到结果,它就履行(或拒绝,取决于退出码)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"