2017-08-09 10 views
0

IGDB APIに1000件のリクエストをする必要があり、私はこの作業をするのに困っています。スクリプトを実行するたびに、ウェブホストから「エラー:問題があります。何か問題が発生したようです。」というメッセージが表示されます。 (あまり役に立たない私は知っている)。PHPでAPIに何千ものリクエストを正しく行う方法

私はこの問題がリクエストの量から来ていると思うので、私はそれを減らそうとしましたが、私はそれぞれ60秒間のリクエストを4秒間停止しています。

私の最新の試み:

$splice = array_splice($array, 0, 60); 

foreach($splice as $key => $value){ 

    $request = wp_remote_get('https://igdbcom-internet-game-database-v1.p.mashape.com/games/?fields=*&search='.$value['Name'], 
       array('headers' => array( 
          'Accept' => 'application/json', 
          'X-Mashape-Key' => 'Key'))); 

    $body = wp_remote_retrieve_body($request); 

    $data_api = json_decode($body, true); 

    sleep(4); 

} 

誰もが私が間違っているのか知っているだろうか?私はアイデアが不足しています...

+0

あなたはおそらく何も間違っていません。ただし、あなたは要求のタイムアウトに陥っています。 一般的に、Webサーバー(Apache、Nginxなど)には、「エラー」ページが表示される前にスクリプトからの応答を待つ時間が設定されています。さらに、PHP自体には時間制限があります。 PHP側からは、 'set_time_limit(0)'を無効にすることができます。 Webサーバー側からは、プロバイダーによっては変更できない場合があります。 一般に、これはWebページの代わりにコンソールコマンドにする必要があります。 –

+1

CMS内のWebページから一括インポートを実行しようとしているのはなぜですか? – symcbean

答えて

0

これは、PHPまたはサーバーのいずれかからのタイムアウト応答以上のものです。 これらの有価証券を巡る方法はありますが、何もないわけではありません。

CGIではなく、貨物照会を実行するにはCLIを使用する必要があります。 CGIアクセスは、その役割/特権が何であれ、通常のユーザーのためのものです。開発者は、コードとサーバーにアクセスできます(または、チームに参加している場合は少なくともシステム管理者が行います)。これらのクエリを実行するには、コマンドラインを使用すべきです(SHOULD)。時間がかかり、失敗する機会が少なくなり、エラーログをファイルにリダイレクトしない限り、すぐにエラーログが出力されます。

+1

私は今週末にいたので、遅れて申し訳ありませんが、あなたの助言に感謝します! 私は現在、SSHクライアントとしてMobaXtermを使用してこれらのクエリを実行しようとしています。私はこのようにリクエストを送信する際にいくつかの問題を抱えていますが、それは別の問題です。 もう一度おねがいします! – Adrien

関連する問題