【发布时间】:2016-06-06 12:52:05
【问题描述】:
假设我想定期执行PHP 脚本,例如。 /home/user/refresh.php,我看到了几个设置 cronjob 的选项:
# Option A: PHP interpreter
*/15 * * * * php-cgi /home/user/refresh.php
# Option B: curl
*/15 * * * * curl -L -s 'http://host.com/refresh.php'
# Option C: wget
*/15 * * * * wget -q --spider http://host.com/refresh.php
除了 PHP 不需要 URL 之外,还有什么区别?是否有性能考虑? 通常哪种方式最好?我发现的唯一问题regarding this matter 没有很详细,我想建立一些良好的习惯或最佳实践。
【问题讨论】:
-
这里有一个明确的答案:视情况而定。您的脚本是否需要适当的 CGI 环境 (
$_SERVERvars),或者是否与 Web 调用完全分开?如果是这样,最好直接调用口译员。否则 wget/curl 没有任何区别(事实上,netcat可以)。 -
如果是我并且这个脚本应该是私有的,我会将它存储在 web 根目录之外 并使用 Option A 来确保只有我自己在使用它,如果它是私有的,那么将它暴露给公共网络是没有意义的。您永远不知道 Google bot 是否会将其编入索引!
-
标题显示“CLI”,但 crontab 摘录使用“php-cgi”。标题是对的。如果您将其作为命令行运行,请不要使用 CGI 版本的 PHP。使用 CLI 版本;它可能在您的系统上称为
php。