假设我想定期执行 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不太详细,我想建立某种良好的习惯或最佳实践。
最佳答案
主要区别在于调用脚本的用户帐户的安全访问权限。对于示例 B 和 C,安全上下文作为 Web 服务器用户帐户执行。对于 A 来说,它属于 crontab 所有者。如果您使用选项 A 以及此脚本的专用帐户,那么您将获得更细粒度的访问控制,因为网络服务器可能有其他安全约束要求/扩展访问。
其次,由于您将此脚本托管在 http://example.com 的网络服务器上,那么您就打开了更多的访问权限来触发脚本。如果需要提供更方便的访问来运行脚本,那么这很好。否则,它不仅安全性较差,而且效率也不高,因为如果尚未将其用于其他目的,您还需要运行主动监听的 Web 服务器,从而产生内存/处理器开销。
关于php - Cronjob脚本调用: PHP interpreter (CLI),curl或wget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37658007/