2017-09-04 7 views
1

で死ぬ:PHPのscipts、shell_exex介して実行、私はこのようなPHPスクリプトを持っている途中

foreach ($items as $item) { 
    if ($condition) { 
     shell_exec("php background.php > /dev/null 2>/dev/null 
     &"); 
    } 
} 

背景スクリプトは、約10秒かかり、並列にif文があるたびに実行されるようになっています本当。問題は、一般的には計画どおりだが、バックグラウンドスクリプトが完全に実行されないことがあるということです。このような並列実行には何らかの制限がありますか?存在する場合、サーバーが別のプロセスを強制終了して別のプロセスを実行するのは正常な動作ですか?

UPD:Btw、条件を強化して、同時プロセス数を減らすと、すべてが魅力的に機能します。

+1

何かをする前に、そのコードのために 'background.php'が失敗しないことを確認してください。 – axiac

答えて

0

比較的短いプロセスであっても、そのようなバックグラウンドプロセスを開始しないでください。

hereで提案された代替使用することをお勧め:

をショートバージョンがshell_exec('echo /usr/bin/php -q longThing.php | at now');ですが、理由はなぜここに含めるために少し長いです。

+0

これは私のループを遅くしませんか? – miha64

+0

"ループ速度"には影響しません。 – PKo

+0

私はそれを変更しましたが、問題は残ります。バックグラウンドスクリプトが完了しないことがあります。 Btw、私が条件を強化し、同時プロセスの数を減らすと、すべてが魅力のように機能します。 – miha64

関連する問題