gpt4 book ai didi

php - 如何使用 PHP 生成并发进程?

转载 作者:可可西里 更新时间:2023-11-01 13:21:57 24 4
gpt4 key购买 nike

我试图在 PHP 中使用 proc_open 一次生成多个进程,但第二个调用在第一个进程结束后才会开始。这是我正在使用的代码:

for ($i = 0; $i < 2; $i++)
{
$cmdline = "sleep 5";
print $cmdline . "\n";
$descriptors = array(0 => array('file', '/dev/null', 'r'),
1 => array('file', '/dev/null', 'w'),
2 => array('file', '/dev/null', 'w'));
$proc = proc_open($cmdline, $descriptors, $pipes);
print "opened\n";
}

最佳答案

其他人指出了替代方案,但您的实际问题可能是 $proc 变量泄漏。我相信 PHP 必须跟踪这个,如果你正在覆盖它,它会为你清理(这意味着 proc_close,这意味着等待......)

尽量不要泄露 $proc 值:

<?php
$procs = array();
for ($i = 0; $i < 2; $i++)
{
$cmdline = "sleep 5";
print $cmdline . "\n";
$descriptors = array(0 => array('file', '/dev/null', 'r'),
1 => array('file', '/dev/null', 'w'),
2 => array('file', '/dev/null', 'w'));
$procs[]= proc_open($cmdline, $descriptors, $pipes);
print "opened\n";
}
?>

注意:这仍会在退出前清理您的进程句柄,因此所有进程都必须先完成。你应该在你完成任何你需要做的事情之后使用 proc_close (即:读取管道等)。如果您真正想要的是启动它们然后忘记它们,那是另一种解决方案。

关于php - 如何使用 PHP 生成并发进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3531174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com