从 PHP 触发 awstats 更新

Trigger awstats update from PHP

我正在尝试从 PHP 脚本中触发 AWStats 的更新。

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

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

然而,这returns是误报。虽然显示了"Logs processed"行,但是AWStats还没有处理stats信息。

AWStats 在直接访问时确实工作得很好,而当 运行 通过 cron 作业更新时,它不是来自这个 PHP 脚本。我检查了错误日志,我的脚本或 AWStats 超时都没有问题。

我是不是漏掉了什么?

郑重声明,此脚本旨在清除旧数据,更新引荐来源黑名单以阻止垃圾邮件,然后重新编译日志文件中的统计数据。是的,我知道使用 SkipReferrerBlackList 指令的性能问题。

从您的代码看来,您认为 exec returns 是一个指示成功或失败的布尔值。它不是,它只是 returns 一个字符串(命令输出的最后一行)。并且字符串("0" 和空字符串除外)的计算结果始终为真。

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

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