编辑:我已经标记了这个 C,希望得到更多的回应。我感兴趣的更多的是理论而不是特定的语言实现。因此,如果您是 C 编码员,请将以下 PHP 视为伪代码,并随时用 C 编写的答案来回应。
我试图通过让它并行而不是串行执行其任务来加速 PHP CLI 脚本。这些任务彼此完全独立,因此它们开始/完成的顺序无关紧要。
这是原始脚本(请注意,为清楚起见,所有这些示例都被剥离):
<?php
$items = range(0, 100);
function do_stuff_with($item) { echo "$item\n"; }
foreach ($items as $item) {
do_stuff_with($item);
}
我已经设法使它与如下所示$items
并行工作:pcntl_fork()
<?php
ini_set('max_execution_time', 0);
ini_set('max_input_time', 0);
set_time_limit(0);
$items = range(0, 100);
function do_stuff_with($item) { echo "$item\n"; }
$pids = array();
foreach ($items as $item) {
$pid = pcntl_fork();
if ($pid == -1) {
die("couldn't fork()");
} elseif ($pid > 0) {
// parent
$pids[] = $pid;
} else {
// child
do_stuff_with($item);
exit(0);
}
}
foreach ($pids as $pid) {
pcntl_waitpid($pid, $status);
}
现在我想扩展它,以便一次最多有 10 个孩子活跃。处理这个问题的最佳方法是什么?我尝试了几件事,但运气不佳。