我正在使用脚本依次打开(proc_open
)从 5 到 50 个进程。他们每个人都做 cURL 并将结果发布到数据库。我不想等待他们的执行结果,我只想让他们在主脚本执行时和之后运行。我set_time_limit(10);
在每个进程文件中使用。
proc_close
等待进程终止,并返回其退出代码。proc_close
在网上我发现一旦主文件完全执行而不调用并且fclose
没有找到任何记录证明,php会自动关闭所有管道和每个进程。
所以问题是:是否有必要关闭管道和 proc_close 进程?如果 100-200 个用户同时运行此脚本并且它为每个用户打开 5 到 50 个进程proc_close
并且fclose
不被调用,这可能是一个问题。如果您有更优雅的方式来完成这项任务,请告诉我,但首先我需要获取有关我当前方法的信息。非常感谢。我用来调用每个进程的代码是(函数的一部分):
$params = addcslashes(serialize($params), '"');
$command = $this->phpPath.' -q '.$filename.' --params "'.$params.'"';
++$this->lastId;
$this->handles[$this->lastId] = proc_open($command, $this->descriptorSpec, $pipes);
$this->streams[$this->lastId] = $pipes[1];
$this->pipes[$this->lastId] = $pipes;