axxapy/easyfork

管理 PHP 工作最简单的方式(使用 pcntl 库)

v0.10.4 2024-06-28 03:25 UTC

This package is auto-updated.

Last update: 2024-09-28 04:00:24 UTC


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);