0

PHPファイルを実行しながら2年間のデータを取得したい。しかし、問題は、curl リクエストが 1 回の発生で停止することはなく、それを置くと終了することです。

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最大処理秒数に相当します。

実際、2つのCURLコマンドを発行しているようです。したがって、21900 * 2=43800の最大処理秒数です。

于 2012-07-25T14:46:16.393 に答える
1

あなたには2年の日があります。それらのそれぞれが新しいリクエストを作成し、新しいリクエストには古いリクエストやそれらのリクエストにかかった時間についての知識がありません。一定時間後に実行を停止したい場合は、以下を使用できますset_time_limit

set_time_limit(30);
于 2012-07-25T14:46:38.087 に答える