我想我之前并不清楚。这就是我想要做的。
我在csv文件中有1000条记录,我使用php fgetcsv解析它。现在我可以获得记录计数和数据。现在我需要有一个循环,循环前100个记录,睡眠/暂停2分钟,然后从101-200,201-300继续,依此类推,直到901-1000。然后停止如果清楚的话请告诉我。
问候
答案 0 :(得分:1)
下面的代码是php风格的伪代码(适应你的api)
$i = 0, $j = 0;
while(1) {
if($j > 100) {
Send(AccumulationBuffer);
flush(AccumulationBuffer);
$j = 0;
sleep($myInterval);
}
if($i == EndOfFile)
break;
AccumulationBuffer.add($i);
$i++;
$j++;
}
答案 1 :(得分:0)
$count =1;
foreach ($csv->data as $key => $row){
foreach ($row as $value) {
$output = "$value";
echo $output;
$count++;
if(($count % 100) == 0){
echo "Sleep for 5 minutes"."\n"; //will sleep after 100 records.
sleep(300);
}
}
}
如果有什么不妥,请纠正我。
答案 2 :(得分:-1)
如果API之间没有时间间隔请求限制,则不需要cron或诸如此类的东西,只需记下已处理的行数,然后在每100行后点击API。
如果有时间限制,那么您可以使用脚本sleep()
,直到限制为止,然后继续循环:
$i = 0;
while($row = fgetcsv($fh)) { // assuming you've already opened the file;
... do some processing ...
$i++; // increment counter
if ($i % 100 == 0) {
... done 100 records, send to API
}
}
答案 3 :(得分:-1)
在你的php文件中添加一个shebang,并将你的php和csv文件的完整路径放在crontab中。例如:
1 * * * * /path/to/dir/myscript.php
然后将'csv counter'放在另一个文件中,在每次迭代中打开,读取,递增和写入