Cronjob 脚本调用:PHP 解释器 (CLI)、curl 或 wget?
Cronjob script call: PHP interpreter (CLI), curl or 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 与此脚本的专用帐户一起使用,那么您将获得更细粒度的访问控制,因为网络服务器可能会有其他安全约束 requirements/extended 访问。
其次,由于您在 http://example.com 的网络服务器上托管此脚本,因此您打开了更多访问权限来触发脚本。如果希望提供对 运行 脚本的更方便的访问,那么这很好。否则,它不仅不那么安全,而且效率也不高,因为如果还没有用于其他目的,您还需要 memory/processor 连接主动监听的 Web 服务器的 运行 开销。
假设我想定期执行 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 与此脚本的专用帐户一起使用,那么您将获得更细粒度的访问控制,因为网络服务器可能会有其他安全约束 requirements/extended 访问。
其次,由于您在 http://example.com 的网络服务器上托管此脚本,因此您打开了更多访问权限来触发脚本。如果希望提供对 运行 脚本的更方便的访问,那么这很好。否则,它不仅不那么安全,而且效率也不高,因为如果还没有用于其他目的,您还需要 memory/processor 连接主动监听的 Web 服务器的 运行 开销。