2011-02-03 1 views
0

Я пытаюсь уменьшить использование памяти в сценариях еще больше. Я пытаюсь сделать мой скрипт генерировать вывод с помощью xdebug для анализа использования памяти. Это скрипт на основе CLI имеет притонxdebug_start_trace ведет себя странно

#!/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 в производственный скрипт, выходной файл не создается.

script.php вызывается из другого файла PHP, поместить в другой папке, так что я использую абсолютный путь в имени файла и вызвать его с помощью exec и добавьте &> /dev/null & к нему, так что он работает в фоновом режиме.

Это сводит меня с ума! Помогите, ребята!

ответ

1

Не знаю, почему это произошло, но я получил ошибку

PHP Notice: Function trace already started in /var/www/html/script.php on line 9 [Проверка «Edit» для информации]

Хотя, нет никакого кода, который вызывает этот xdebug_start_trace();.

Так что я положил xdebug_stop_trace(); до xdebug_start_trace();, все работает нормально.

Странно.

Edit: я получаю вышеуказанную ошибку, как я установил auto_trace Вкл в php.ini

Кроме того, получается, что если вы добавить &> /dev/null & к команде, не лог Xdebug не генерируется. Однако, если я делаю &> /dev/null (обратите внимание на последние &), xdebug генерирует журналы. Вероятно, это связано с пользовательским выходом xdebug, который должен использоваться внутри. Не уверен.

0

Вы имеете в виду ...

if($argv[1] == 90) { 
     xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999)); 
} 

... приводит к след-файл и ...

xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999)); 

... просто оставляя за condiional заявление не дает ни один?

Ну, я действительно не могу поверить, что трассировка начинается где-то там ... так что где-то должен быть вызов функции. Учитывая ваше описание, кажется, что ваша настройка довольно запутана. Поэтому я не думаю, что ваша проблема каким-либо образом связана с XDebug, но это явление трассировки - это просто случайный симптом, который, как вы могли бы заметить.

Попробуйте настроить сценарий, который является как можно более простым и по-прежнему дает вам это. Затем снова опубликуйте, что происходит, b/c ваше описание также довольно запутывает ИМХО.

Лучшие

Раффаэль