foreach中file_get_contents()上的500服务器错误

时间:2016-10-11 07:01:16

标签: php magento

我有一个实时股票网址,这是一个您最后添加SKU号码的网址,如34342323232|23232|2323232|232232

所以我编写了一个脚本,从Magento数据库中提取所有项目编号/ Sku,并在URL末尾运行25个Sku,然后使用file_get_contents获取数据

我已将数组拆分为块,因为网址一次只能处理大约25个。

它在foreach循环中运行,数据库位工作正常,脚本在运行foreach几次时似乎返回500错误。

我尝试了一些事情,出现max_input_vars等似乎没有帮助。

这将每半小时左右运行并运行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,我已经尝试了一些解决方案,但似乎无法让它运作良好,但我再也不能理解它。

我已经通过这里的线程并尝试了大量的解决方案而没有运气。

提前谢谢。

更新

错误日志显示

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

1 个答案:

答案 0 :(得分:0)

我通过进行以下更改来修复此错误

ProcessLifeTime 7200
IPCConnectTimeout 30
IPCCommTimeout 60
FcgidMaxRequestsPerProcess 10000
FcgidConnectTimeout 600
FcgidIOTimeout 10000

现在似乎运行良好。