Триггер awstats обновление от переполнения стека

Я пытаюсь вызвать обновление AWStats из скрипта PHP.

В настоящее время я использую задание cron для запуска обновления и просто скопировал командную строку в exec функция внутри скрипта.

if(exec("/path/to/awstats.pl -config=domain.com -update")) {
echo 'Logs processed';
}

Тем не менее, это возвращает ложный положительный результат. Хотя отображается строка «Журналы обработаны», AWStats не обработал статистическую информацию.

AWStats отлично работает при непосредственном посещении, а при запуске обновления через задание cron это просто не из этого скрипта PHP. Я проверил журналы ошибок, нет проблем с моим скриптом или с тайм-аутом AWStats.

Я что-то пропустил?

Для записи, этот сценарий предназначен для очистки старых данных, обновления черного списка ссылок, чтобы блокировать спам, а затем перекомпилировать статистические данные из файлов журнала. Да, я знаю о проблемах производительности при использовании директивы SkipReferrerBlackList.

1

Решение

Из вашего кода кажется, что вы думаете exec возвращает логическое значение, указывающее успех или неудачу. Это не так, он просто возвращает строку (последнюю строку вывода команды). И строки (кроме "0" и пустая строка) всегда оценивается как истина.

Для устранения проблемы вы должны вывести вывод команды:

exec("/path/to/awstats.pl -config=domain.com -update", $output);
echo join(PHP_EOL, $output);
1

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

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