PHP循环批处理

wfveoks0  于 2023-03-16  发布在  PHP
关注(0)|答案(3)|浏览(122)

我有一个端点,我可以向它发送GET请求,它会根据限制和偏移返回不同的结果。

https://example-foo-bar.com?l=100&o=0 // returns the first 100 items.

我想创建一个for循环(或者我假设是嵌套的for循环),一次返回100个元素,每次将结果添加到一个数组中,直到响应结束。我有发送curl请求和存储结果的代码,只是在批处理部分有点困难。
比如:

https://example-foo-bar.com?l=100&o=0

https://example-foo-bar.com?l=100&o=99

https://example-foo-bar.com?l=100&o=199

https://example-foo-bar.com?l=100&o=218 // end of response ?

我还知道总共有多少个结果,存储为$count;
我最终得到了这样的结果,但这并不像是最佳实践:

function testLoop(){

  $limit = 100;

  $count = getCount();

  $j = ceil($count/$limit);

  for ($i = 0; $i < $j; $i++){
    $offset = $i*100;
    echo 'https://example-foo-bar?l='.$limit.'&o='.$offset.'';
  }
 }

 testLoop();
wkftcu5l

wkftcu5l1#

我不知道我是否正确理解了这个问题。但是你是在找这样的东西吗?

$offset = 0;
$limit = 100;
$run = true;
$result_array = array();
while($run) {      
  $result_array = array_merge($result_array, json_decode(file_get_contents("https://example-foo-bar.com?l=".$limit."&o=".$offset),true));
  $offset = $offset + $limit;
  if($offset == {somenumber}) {
    $run = false;
  }
}

然后使用cron作业调用php文件

wfauudbj

wfauudbj2#

1.创建表“schedule”并存储数据id、link_name、offset和status列
1.将cron设置为每10分钟执行一次,并获取第一个状态=0的条目
1.将参数传递给testLoop($limit)调用函数。它可以像这样只完成offset =0,offset =99,offset =199的链接
1.完成后,更新计划表中的状态=1。

  1. 10分钟后cron调用步骤1。
mqkwyuun

mqkwyuun3#

对于这种类型的批处理,使用Cron的最好方法是使用php-resque

相关问题