定期运行php脚本并记录计数

时间:2011-11-14 18:05:43

标签: php csv

我想我之前并不清楚。这就是我想要做的。

我在csv文件中有1000条记录,我使用php fgetcsv解析它。现在我可以获得记录计数和数据。现在我需要有一个循环,循环前100个记录,睡眠/暂停2分钟,然后从101-200,201-300继续,依此类推,直到901-1000。然后停止如果清楚的话请告诉我。

问候

4 个答案:

答案 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'放在另一个文件中,在每次迭代中打开,读取,递增和写入