3

我正在使用脚本依次打开(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;
4

0 回答 0