Понимание вывода трассировки XDebug для странной памяти, используемой скриптом

Происходит то, что в случайное время веб-страница выдает ошибку «Разрешено исчерпано памяти» в журналах Apache. У меня есть трассировка xdebug обоих случаев, когда проблема возникает и когда она работает нормально. Когда я сравниваю файлы трассировки, удивительно видеть записи журнала без какого-либо имени функции и случайного количества потребляемой ими памяти. Итак, я хочу понять две вещи.

  1. У меня есть код ниже

        if (function_exists('ini_set')) {
    ini_set('include_path', ROOT . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
    }
    

В случае ошибки его журнал трассировки имеет вид

2       23      0       0.007218        701448  function_exists 0      app/webroot/index.php  101    1       'ini_set'

2       23      1       0.007236        701448

2       24      0       0.007255        701592  ini_get 0              app/webroot/index.php  102    1       'include_path'

2       24      1       0.007277        701648

2       25      0       0.007288        701592  ini_set 0              app/webroot/index.php  102

2       'include_path'  'httpdocs/lib:.:/usr/share/pear:/usr/share/php'

2       25      1       0.007617        702016

2       26      0       0.008726        755816  include 1       lib/Cake/bootstrap.php app/webroot/index.php  104    0

В этом журнале есть две записи для Function Id 25, то есть ini_set (), с памятью 701592 и 702016. Память, используемая первой записью, составляет 702016-701592 = 424 байта, а память, используемая второй записью, составляет 755816-702016 = 53800 байтов.

Я не могу понять существование второй записи без какой-либо функции Name, и где именно используется память для второй записи?

  1. Вторая проблема заключается в том, что в двух имеющихся у меня журналах я могу заметить, что объем памяти, используемой записью журнала без какого-либо имени функции, сильно различается.

Ниже находится журнал для другого запуска. Здесь снова две записи для функции Id 25 с памятью 645616 и 646040. Объем памяти, используемой первой записью, равен 646040-645616 = 424 байта (такой же, как ранее), а объем памяти, используемой второй записью, равен 646176-646040 = 136 байтов (в последней пробег был 53800 байт).

Опять же, где он привык и почему эта сумма меняется! Я вижу много таких отклонений в этих двух журналах трассировки, суммирующих до степени, вызывающей ошибку «Разрешено исчерпано память». Пожалуйста, помогите мне понять это.

2       23      0       0.000908        645472  function_exists 0      app/webroot/index.php  101    1       'ini_set'

2       23      1       0.000924        645472

2       24      0       0.000936        645616  ini_get 0              app/webroot/index.php  102    1       'include_path'

2       24      1       0.000952        645672

2       25      0       0.000960        645616  ini_set 0              app/webroot/index.php  102    2       'include_path'  'lib:.:/usr/share/pear:/usr/share/php'

2       25      1       0.000996        646040

2       26      0       0.001034        646176  include 1       lib/Cake/bootstrap.php app/webroot/index.php  104    0

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]