1

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

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

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

但是,这会返回误报。尽管显示了“已处理日志”行,但 AWSStats 尚未处理统计信息。

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

我错过了什么吗?

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

4

1 回答 1

1

从您的代码看来,您认为exec返回一个指示成功或失败的布尔值。它没有,它只是返回一个字符串(命令输出的最后一行)。并且字符串(除了"0"空字符串)总是评估为真。

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

exec("/path/to/awstats.pl -config=domain.com -update", $output);
echo join(PHP_EOL, $output);
于 2017-02-28T10:56:27.120 回答