私はライブストックURLを持っています。これは、SKU番号をこの末尾に追加するURLである34342323232|23232|2323232|232232
です。500 foreach内のfile_get_contents()のサーバーエラー
私はMagentoデータベースからすべてのアイテム番号/ Skuを取得し、URLの最後に25 Sku'sを実行し、次にfile_get_contents
を使用してデータを取得するスクリプトを書いています。
URLはチャンクに分割されているため、URLは一度に25件しか処理できません。
これは、foreachループで実行されます。データベースビットは正常に動作し、foreach
を数回実行するとスクリプトは500エラーを返すようです。
私はいくつかのことを試しましたが、max_input_varsなどを立てることは役に立たないようです。
これは30分ごとに実行され、1000を実行しているので、URLからデータを取得するには良い方法がありますか?サーバーをクラッシュさせない、より高速な方法?
foreachループコードは以下のとおりです。
$updatedStock = array();
// Split Array in to chunks of 25
foreach(array_chunk($productSkus_single, 25) as $sku_chunk) {
// Add sku string to live url and get contents
$LiveFeedStock = file_get_contents($stockFeedUrl . implode("|", $sku_chunk));
// Turn file contents in to an array and Remove <br/> add to array
$updatedStock[] = array_values(array_filter(explode("<br/>",$LiveFeedStock), 'strlen'));
}
残りのコードが必要な場合は、それを提供することができますが、これは失敗するようです。
私はcURLを認識していますが、いくつかの解決策を試しましたが、うまくいくようには見えませんでしたが、もう一度理解していません。
私は既にここにスレッドを通過しており、運のない数多くのソリューションを試しました。
ありがとうございます。
UPDATE
エラーログ表示
mod_fcgid: read data timeout in 40 seconds
End of script output before headers: index.php
mod_fcgid: process 18805 graceful kill fail, sending SIGKILL
'set_time_limit()'が失敗する可能性があります。あなたの関数で 'set_time_limit(0);'を試し、それが役立つかどうか確認してください。 –
ありがとうございました、どこに私はこれを置くのですか?私は自分のコードでset_time_limitを持っていないので。 –
機能の始めに試してみることができます。また、 'file_get_content()'が有効になっていることを確認してください。いくつかのサーバーはセキュリティ上の理由からそれを無効にしています。この場合は 'cURL'を使用してください。 –