php - Cronjob脚本调用: PHP interpreter (CLI),curl或wget?

标签 php curl cron wget

假设我想定期执行 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/

相关文章:

php - 获取 WooCommerce 中事件选定产品变体的数量

php - 构建独立于所用 SQL 引擎的应用程序

PHP 不会比较相同的字符串

c++ - 如何从 libcurl 中的 http header 中删除 Accept

ruby-on-rails - 有一条相对的shebang线

php - MySQL - 'field' 没有默认值

curl - 如何通过CURL在Vagrant的SSH中触发Xdebug?

php - 在 PHP 中通过 cURL 从表单 POST 发送文件

django - 如何使用 Tivix django-cron 应用程序

php - Cronjob 创建输出文件,但不写入它