我正在尝试创建同一脚本的多个实例来帮助处理一个非常大的文件。下面是我的代码片段:
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),服务器只执行一次脚本,它是最后一个执行的脚本实例(即 $i=5 时调用的脚本实例)。这就好像我多次请求服务器执行同一个脚本的速度太快,它会覆盖我之前的请求........ 但是,如果服务器有足够的时间实例化第一个请求,它就不会覆盖之前的请求请求的脚本实例。
我不想在我的循环之间睡觉。有什么办法吗???. .
谢谢, 苏米特