我正在使用脚本一个接一个地从5到50个进程打开(proc_open
)。他们每个人都做cURL并将结果发布到DB。我不想等待他们的执行结果,我只是希望它们在主脚本被执行时和之后运行。我在每个proccess文件中使用set_time_limit(10);
。
proc_close
等待进程终止,并返回其退出代码。
在网络上,我发现php在主文件完全执行后自动关闭所有管道和每个进程,而不调用proc_close
和fclose
,但没有找到任何记录证明。
所以问题是:是否需要fclose管道和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;