【问题标题】:Get error 500 when loop does 200+ iterations循环执行 200 多次迭代时出现错误 500
【发布时间】:2017-11-18 16:44:28
【问题描述】:

PHP 版本 5.5.9 阿帕奇 2 100 次迭代完美无缺,但如果我尝试更多(例如,200 次),我得到 ERROR 500。 我检查了内存消耗,看起来还不错,大约 600KB 。所以,当我增加迭代器时,IDK 为什么会崩溃到错误。 我尝试了一些技巧,但没有运气。 IDK 为什么,但是如果脚本崩溃到 500 错误,它甚至不会显示第一个回声...所以,我不能自己调试它

以下代码:

<?
//load constantes
if (is_file('config.php')) {
        require_once('config.php');
}
//set charset
ini_set("default_charset",'windows-1251');//utf-8
ini_set('display_errors', 1);
set_time_limit(600);

//create 

$MyArrayOfAvailItems=array();

    for($i = 0; $i < 200; $i++) {



            $model_id   = 5000+$i;
            //echo $model_id;
            //echo '
            //      ';            
            array_push($MyArrayOfAvailItems, $model_id);    

    }   



echo $MyArrayOfAvailItems[0];
echo '
                    ';
echo sizeof($MyArrayOfAvailItems);
echo '
                    ';

$MyArrayOfFindedItems=array();
//$item_container = "bx_catalog_item_container";
$item_container = "Сожалеем";
/* Convert, target encoding, source encoding*/
$item_container = mb_convert_encoding($item_container, "windows-1251", "utf-8");

function populateArray2($model, $data) {
    global $model;
    global $data;
    global $item_container;
    global $recurse;
    global $MyArrayOfFindedItems;
    /*
    if ($recurse === 1) {
        echo $item_container;
        echo $data;
        echo 'hello world '.$model;
        echo '
            ';
    }
    */
    $pos = strpos($data, $item_container);
    //echo $pos;
    if ($pos !== false) {
        array_push($MyArrayOfFindedItems, $model);
        echo $model;
        echo ' 
                ';
        //$recurse = 1; 
        //populateArray2($model, $data, $recurse);
    } else {
        //echo 'not found';
    } 

}
foreach ($MyArrayOfAvailItems as $model) {
    //$item_id = 5121;
    //echo $model;
    //echo '
    //              ';
    $data = file_get_contents('https://ufopeople.ru/catalog/?q='.$model);
    //echo $data;
    //echo '
    //              ';
    $recurse = 0;   
    populateArray2($model, $data);

}



//echo $data;
echo '
    ';
echo memory_get_usage(true)."\n";
echo memory_get_peak_usage(true)."\n";
//echo sizeof($MyArrayOfFindedItems);
/*
foreach ($MyArrayOfFindedItems as $checkit) {
    echo '
                    ';
    echo $checkit;  
}
*/

仅在 apache 日志中 [core:notice] [pid 20070] AH00052: child pid 17126 exit signal Segmentation fault (11) 与我收到错误 500 无关的时间

【问题讨论】:

  • (错误)日志中的任何内容?
  • 我应该在哪里检查它们?我使用 Ubuntu 14.04 LTS
  • @Fred-ii- [core:notice] [pid 20070] AH00052: child pid 17126 exit signal Segmentation fault (11) only that I found in my logs.记录的时间与我得到 ERROR 500 无关

标签: php performance loops runtime-error


【解决方案1】:

我更改了 php.ini 文件中的设置,该文件位于此处
/etc/php5/apache2/php.ini
max_execution_time = 300(从 30 开始)
并执行命令:
sudo service apache2 restart
现在可以了

P.S.:看来我的 php 命令

set_time_limit(600);

没用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2016-10-31
    • 2018-10-08
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多