是否需要fclose管道和proc_close进程

时间:2015-03-13 13:19:28

标签: php pipe fclose proc-open

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

所以问题是:是否需要fclose管道和proc_close进程? 如果100-200个用户同时运行此脚本并且每个用户打开5到50个进程并且未调用proc_closefclose,则会出现问题。 如果你有一个更优雅的方式来完成这个任务,请告诉我,但首先我需要获得有关我当前方法的信息。非常感谢。 我用来调用每个进程的代码是(函数的一部分):

        $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;

0 个答案:

没有答案