2
$query = "https://api.facebook.com/method/fql.query?format=JSON&query=";
$urls = array('about 500 link');
foreach ($urls as $url)
{
    $query .= urlencode("select post_fbid, fromid, object_id, text, time from comment where object_id in (select comments_fbid from link_stat where url ='$url')"); 
    $query .= "&pretty=1";

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $query);
    curl_setopt($ch, CURLOPT_TIMEOUT ,900); 
    $data = curl_exec($ch); 
    $response = json_decode($data, true);
    echo '<pre>';print_r($response);echo '</pre>';
    curl_close($ch);
}

$urls配列に約 500 個のリンクがあるときにこのコードを実行すると、結果としてエラーがERROR 500 - Internal Server Error発生し$urlsます。タイムアウトせずに 500 個すべてのリンクのコンテンツを取得するにはどうすればよいですか?

4

1 に答える 1

2

リクエストの期間には制限があるため、これはカール エラーではなく、サーバー エラーです。500 ページのリクエストにはしばらく時間がかかり、スクリプトが終了します。次のことを試してください。

  1. セットset_time_limit(200);以上
  2. SSH 接続を使用してスクリプトを実行します。タイムアウトはまったくありません
  3. curl_multi_init複数のリクエストを並行して実行するために使用します
于 2012-12-14T18:30:28.727 に答える