0

非常に大きなファイルを処理するために、同じスクリプトの複数のインスタンスを作成しようとしています。以下は私のコードスニペットです:

        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 のときに呼び出されるスクリプトのインスタンス) です。これは、サーバーに同じスクリプトを複数回実行するように要求した場合、以前の要求が上書きされる........しかし、最初のスクリプトをインスタンス化するのに十分な時間があれば、サーバーは以前の要求を上書きしません。要求されたスクリプトのインスタンス。

ループの間に眠る必要はありません。回避策はありますか??! . .

ありがとう、サミット

4

0 に答える 0