axxapy / easyfork
管理 PHP 工作最简单的方式(使用 pcntl 库)
v0.10.4
2024-06-28 03:25 UTC
Requires
- php: ^8.2
- ext-json: *
- ext-pcntl: *
- ext-posix: *
Requires (Dev)
- phpunit/phpunit: ^11
Suggests
- ext-apcu: *
- ext-memcached: *
- ext-sockets: *
README
创建单个分支并读取其结果
$proc = (new Fork(job: function(Process $proc) { $proc->shared_memory['job_is_done'] = true; }))->run(); var_dump($proc->shared_memory['job_is_done']); // null $proc->waitFor(); var_dump($proc->shared_memory['job_is_done']); // true
并行下载多个网页
$fork = new Fork(job: function(Process $proc, ...$args) { $url = $args[0]; $proc->shared_memory['result'] = file_get_contents($url); }); $procs = [ $fork->run('https://some-website.com/page1.html'), $fork->run('https://some-website.com/page2.html'), $fork->run('https://some-website.com/page3.html'), ]; // do some other job //when ready, read result: foreach ($procs as $proc) { $proc->waitFor(); echo $proc->shared_memory['result']; }
ForkPoolExecutor
$stop = false; $result = (new ForkPoolExecutor(job: function(Process $proc) use (&$stop) { $proc->shared_memory["fork_$this->id"] = 'result'; }))->run(); var_dump($result);