Я пытаюсь вызвать обновление AWStats из скрипта PHP.
В настоящее время я использую задание cron для запуска обновления и просто скопировал командную строку в exec
функция внутри скрипта.
if(exec("/path/to/awstats.pl -config=domain.com -update")) {
echo 'Logs processed';
}
Тем не менее, это возвращает ложный положительный результат. Хотя отображается строка «Журналы обработаны», AWStats не обработал статистическую информацию.
AWStats отлично работает при непосредственном посещении, а при запуске обновления через задание cron это просто не из этого скрипта PHP. Я проверил журналы ошибок, нет проблем с моим скриптом или с тайм-аутом AWStats.
Я что-то пропустил?
Для записи, этот сценарий предназначен для очистки старых данных, обновления черного списка ссылок, чтобы блокировать спам, а затем перекомпилировать статистические данные из файлов журнала. Да, я знаю о проблемах производительности при использовании директивы SkipReferrerBlackList.
Из вашего кода кажется, что вы думаете exec
возвращает логическое значение, указывающее успех или неудачу. Это не так, он просто возвращает строку (последнюю строку вывода команды). И строки (кроме "0"
и пустая строка) всегда оценивается как истина.
Для устранения проблемы вы должны вывести вывод команды:
exec("/path/to/awstats.pl -config=domain.com -update", $output);
echo join(PHP_EOL, $output);
Других решений пока нет …