Xdebug_start_trace ведет себя странно
Я пытаюсь уменьшить использование памяти script еще больше. Я пытаюсь сделать свой вывод script с помощью xdebug для анализа использования памяти. Это CLI на основе script имеет shebang
#!/usr/local/bin/php -q
Я передаю ему параметр и проверяю его с помощью
$argc > 1 && is_numeric( $argv[1] )
Когда я вхожу в ssh и делаю ./script.php 90
и добавляю этот код,
if( $argv[1] == 90 ) {
xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999) );
}
Я вижу выходной файл в папке logs
.
Но когда я помещаю xdebug_start_trace
без оператора if
в production script, выходной файл не создается.
script.php
вызывается из другого php файла, помещенного в другую папку, поэтому я использую абсолютный путь в имени файла и вызываю его с помощью exec
и добавляет &> /dev/null &
к нему, поэтому он запускается в фоновом режиме.
Это сводит меня с ума! Помогите, ребята!
Ответы
Ответ 1
Не знаю, почему это произошло, но я получил сообщение об ошибке
PHP Notice: Function trace already started in /var/www/html/script.php on line 9
[Отметьте "Изменить" для информации]
Хотя, не существует кода, запускающего этот xdebug_start_trace();
.
Итак, я положил xdebug_stop_trace();
до xdebug_start_trace();
, все работает нормально.
Странно.
Изменить: я получил ошибку выше, поскольку я установил auto_trace для On в php.ini
Кроме того, получается, что если вы добавляете команду &> /dev/null &
в команду, то не генерируется файл xdebug. Однако, если я делаю &> /dev/null
(обратите внимание на последний &
), xdebug генерирует журналы. Вероятно, это связано с пользовательским выходом xdebug, который должен использоваться внутри. Не уверен, однако.
Ответ 2
Вы имеете в виду...
if( $argv[1] == 90 ) {
xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999) );
}
... приводит к трассировочному файлу и...
xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999) );
... просто исключение из условного выражения не дает вам никаких результатов?
И хорошо, я действительно не могу поверить, что трассировка начинается где-то не так... поэтому где-то должен быть вызов функции. Учитывая ваше описание, кажется, что ваша настройка довольно запутана. Поэтому я не думаю, что ваша проблема каким-либо образом связана с XDebug, но это явление трассировки - это просто случайный симптом, который вы заметили.
Попробуйте настроить как можно более простой сценарий и все еще дает вам это. Затем снова опубликуйте, что происходит, b/c ваше описание также довольно запутывает ИМХО.
Лучшие
Раффаэль