我一直在想,在创建一个cron作业时,wget [参数],curl [参数]和php [参数]之间有区别吗?
如果我有一个脚本“cron-00-00.php”并且我需要运行它,那么上面提到的每一个都会做什么?
0 0 * * * php -q /your_abolute_path/includes/php/cron/cron-00-00.php >/dev/null 2>&1
0 0 * * * wget -O - -q -t 1 http://your_domain_com/includes/php/cron/cron-00-00.php >/dev/null 2>&1
0 0 * * * curl http://your_domain_com/includes/php/cron/cron-00-00.php
或者可以选择使用其中任何一个(取决于最适合我的那个)?
我目前认为其中3个具有不同的功能。请纠正我的观念。
答案 0 :(得分:9)
直接运行PHP是最简单的选择。它不会占用您的apache(或其他Web服务器)实例上的网络插槽。它还绕过了与旨在保护您的计算机免受恶意第三方攻击的网络服务器相关的限制。但是,运行PHP命令行版本的环境略有不同,并且可能足以防止写得不好的脚本正常运行。此外,一些web服务器在apache的进程空间中运行PHP作为DSO模块,并使用apache的用户权限。这可能会影响您的结果(可能是正面的,也可能是负面的)。
在剩余的两个选项中,curl
似乎比wget
稍微广泛部署,所以这将是我的第二选择,尽管它们大致相等。