非常に大きなファイルを処理するために、同じスクリプトの複数のインスタンスを作成しようとしています。以下は私のコードスニペットです:
for($i =0; $i<=5; $i++)
{
$offset = $i*$thread_data_size;
$data_slice = array_slice($file_array,$offset,$thread_data_size);
$data_serialized = serialize($data_slice);
$data_serialized = str_replace('"', '\"',$data_serialized);
$root ='/data/web/stage.shiprequest.com/public/async_processes/hubit/';
$scriptfilename = $root.'phptest2.php';
$cmd = "nohup nice -n 10 /usr/bin/php -c /etc/php.ini -f $scriptfilename \"$data_serialized\" \"$origacctcode\" \"$compcode\" \"$uid\" \"$mode\" \"$batchId\" \"$hubid\" > /dev/null 2>/dev/null & ";
sleep(1);
$output = shell_exec($cmd);
}
問題は、サーバーがスクリプト (phptest2.php) の複数のインスタンスを作成することです。ループ実行の間に sleep(1) を配置する必要があります。sleep(1) を設定しない場合、サーバーはスクリプトを 1 回だけ実行し、実行されるのはスクリプトの最後のインスタンス (つまり、$i=5 のときに呼び出されるスクリプトのインスタンス) です。これは、サーバーに同じスクリプトを複数回実行するように要求した場合、以前の要求が上書きされる........しかし、最初のスクリプトをインスタンス化するのに十分な時間があれば、サーバーは以前の要求を上書きしません。要求されたスクリプトのインスタンス。
ループの間に眠る必要はありません。回避策はありますか??! . .
ありがとう、サミット