从PHP

时间:2017-02-28 10:37:51

标签: php awstats

我试图从PHP脚本中触发AWStats的更新。

我目前使用cron作业来触发更新,只需将命令行复制到脚本中的exec函数中。

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

但是,这会返回误报。虽然显示“已处理日志”行,但AWStats尚未处理统计信息。

AWStats在直接访问时确实可以正常工作,并且当通过cron作业运行更新时,它不是来自这个PHP脚本。我已经检查了错误日志,我的脚本或AWStats超时都没有问题。

我错过了什么吗?

对于记录,此脚本旨在清除旧数据,更新引用者黑名单以阻止垃圾邮件,然后从日志文件重新编译统计数据。是的,我知道使用SkipReferrerBlackList指令的性能问题。

1 个答案:

答案 0 :(得分:1)

从您的代码中可以看出,您认为exec返回一个表示成功或失败的布尔值。它不会,它只返回一个字符串(该命令的最后一行输出)。字符串("0"除外)和空字符串总是计算为true。

要调试问题,您应该打印命令的输出:

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