假设我想定期执行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并没有详细说明,我想建立一些良好的习惯或最佳实践。
答案 0 :(得分:3)
主要区别在于调用脚本的用户帐户的安全访问权限。对于示例B和C,安全性上下文作为Web服务器用户帐户执行。对于A,它是属于crontab所有者的那个。如果您使用带有专用帐户的选项A到此脚本,那么您可以获得更精细的谷物访问控制,因为Web服务器可能具有其他安全约束要求/扩展访问权限。
其次,由于您在http://example.com的网络服务器上托管此脚本,因此您已经开辟了更多访问权限来触发脚本。如果希望提供更方便的访问来运行脚本,那么这很好。否则,它不仅不太安全,而且效率也不高,因为如果它还没有被用于其他目的,那么运行主动监听的Web服务器也会产生内存/处理器开销。