0

我想在执行 php 文件时获得 2 年的数据。但问题是,curl 请求永远不会因为一次发生而停止,如果我把它结束:

curl_setopt($ch, CURLOPT_TIMEOUT, 30);

它的工作,但我等待 30 秒,在我的导航器中,我等待几秒来执行文件,为什么我的脚本永远不会停止?

编码 :

<?php
  $dateDeb = '2010-07-23';
  $dateFin = '2012-07-23';

  $debut_mois = 07;
  $debut_jour = 23;
  $debut_annee = 2010;
  $fin_mois = 07;
  $fin_jour = 23;
  $fin_annee = 2012;
$dates=array();
   $debut_date = mktime(0, 0, 0, $debut_mois, $debut_jour, $debut_annee);
   $fin_date = mktime(0, 0, 0, $fin_mois, $fin_jour, $fin_annee);

    for($i = $debut_date; $i <= $fin_date; $i+=86400)
    {
            $dates[]=date("Y-m-d",$i);
    }



foreach($dates as $date){

    $cron1='http://ndd.com/admin/api/xiti/bot-lien_sponsorisees/'.$date;
    $cron2='http://ndd.com/admin/api/xiti/bot-affiliation/'.$date;
    $cron3='http://ndd.com/admin/api/xiti/bot-analytics/'.$date;

    echo $date." : EN COURS ... ";

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $cron1); 
    curl_setopt($ch, CURLOPT_USERPWD, 'user:pass');
   // curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_exec($ch); 
    curl_close($ch);


    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $cron2); 
    curl_setopt($ch, CURLOPT_USERPWD, 'user:pass');
    //curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_exec($ch); 
    curl_close($ch);

    echo $date." : OK \n";

    }
4

2 回答 2

1

它永远不会停止,因为您循环了 2 年的日期,即 730 天。

因此,您发出 730 个 CURL 命令,并且超时可等于 730 * 30 = 21900 最大处理秒数。

实际上,我看到您正在发出两个 CURL 命令,因此 21900 * 2 = 43800 最大处理秒数。

于 2012-07-25T14:46:16.393 回答
1

你有两年的日子。其中每一个都会发出一个请求,而新请求不知道旧请求或这些请求花费了多长时间。如果要在一定时间后停止执行,可以使用set_time_limit

set_time_limit(30);
于 2012-07-25T14:46:38.087 回答