0

所以我的第一个项目是简单的抓取器,它可以提取银行数据并将模板中的数据重新发布到我的服务器。到目前为止一切顺利,但最后一步让我望而却步。

我希望这个脚本在一个小时的顶部使用 CRON JOB ONCE 并停止。每次由于 cron 作业页面加载而运行脚本时,我都希望数组中的单个 URL 用于数据。所以我写了这段代码,它会抓取页面、构建页面并完美地发布页面。

但是——它只发布数组中的一个值(url),并且不会迭代到下一个数组值。

下面是我用于成功的 foreach 语句和中断的代码;

   $i = 0;  // set counter
   foreach($urlscrape_data as $links_to_loop => $link_to_post){
    $master_data = file_get_contents($link_to_post);
    if (++$i == 1) {
            break;
            }
     }

下面是我创建的 $urlscrape_data 数组的示例 var_dump。

    array(6) { [0]=> string(43) "http://www.somesite.com/some-page.htm" [1]=> string(44)
    "http://www.somesite.com/some-page2.htm" [2]=> string(44) "http://www.somesite.com/some- page3.htm" 
     [3]=> string(44) "http://www.somesite.com/some-page4.htm" [4]=> string   (44) "http://www.somesite.com/some-page5.htm" 
     [5]=> string(44) "http://www.somesite.com/some-page6.htm" } 761          

当我在页面加载时运行一次脚本时,它每次都使用 [5] 键中的值(URL)。有一次它运行了 [0] 键值,但连续执行了 10 次。它从不运行 [1]-[4] 键。我认为使用我的代码,将使用下一个值,直到全部用完。谢谢阅读!

4

1 回答 1

0

它只运行一次,因为循环在第一次迭代结束时中断。

我假设您想要做的是让每个 CRON 作业通过数组的不同值。例如,下午 1:00 作业将发布键 0 中的值,下午 2:00 作业将发布键 1 中的值,等等...

您需要存储一个独立于您正在使用的脚本的全局计数器,因为脚本在每小时的顶部打开和关闭,并且它输出的值不会保存。一个简单的解决方案是将数字存储在数据库表中。然后,每次脚本运行时都可以使用类似下面的内容来更新该数字。

//Establish a connection with your database and grab the value in your table
$i = $database_variable;
$master_data = file_get_contents($urlscrape_data["$i"]);
//update your database
于 2013-11-02T20:11:43.597 回答