3

スクリプトを使用して ( proc_open) 5 ~ 50 のプロセスを次々と開きます。それぞれが cURL を実行し、結果を DB に投稿します。実行結果を待ちたくありません。メイン スクリプトの実行中と実行後に実行するだけです。set_time_limit(10);各プロセスファイルで 使用します。proc_close プロセスが終了するのを待ち、その終了コードを返します。proc_closeウェブ上で、メインファイルが呼び出しなしで完全に実行されると、php がすべてのパイプと各プロセスを自動的に閉じることがわかりましたがfclose、文書化された証明は見つかりませんでした。

問題は、パイプと proc_close プロセスを fclose する必要があるかどうかです。また、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