从 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);
我正在尝试从 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);