使用 crontab 运行 PHP 文件
Posted
技术标签:
【中文标题】使用 crontab 运行 PHP 文件【英文标题】:Running PHP file using crontab 【发布时间】:2016-06-03 20:43:15 【问题描述】:我需要每 1 小时运行一次 php 文件。
我正在做的是:
sudo crontab -e
(在编辑器中)* 01 * * * /usr/bin/php /var/www/devicecheck.php
但不知何故,它不起作用。该命令在命令行上运行。在此之前,我正在尝试 php /var/www/devicecheck.php
有什么建议吗?
【问题讨论】:
【参考方案1】:要每 1 小时执行一次 devicecheck.php,请尝试以下操作:
方法A ::使用crontab中的php执行脚本
# crontab -e
00 * * * * /usr/bin/php/var/www/devicecheck.php
方法 B:使用 crontab 中的 URL 运行 php 脚本
如果您的 php 脚本可以使用 URL 调用,您可以使用 lynx、curl 或 wget 来设置您的 crontab,如下所示。
以下脚本通过使用 lynx 文本浏览器调用 URL 来执行 php 脚本(每小时)。 Lynx 文本浏览器默认以交互模式打开 URL。但是,如下所示,lynx 命令中的 -dump 选项会将 URL 的输出转储到标准输出。
00 * * * * lynx -dump http://www.yourwebsite.com/yourscript.php
以下脚本通过使用 CURL 调用 URL 来执行 php 脚本(每 5 分钟一次)。 Curl 默认在标准输出中显示输出。使用“curl -o”选项,您还可以将脚本的输出转储到临时文件,如下所示。
*/5 * * * * /usr/bin/curl -o temp.txt http://www.yourwebsite.com/yourscript.php
以下脚本通过使用 WGET 调用 URL 来执行 php 脚本(每 10 分钟一次)。 -q 选项表示相当模式。 “-O temp.txt”表示将输出发送到临时文件。
*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.yourwebsite.com/yourscript.php
更新::
# chmod a+x /home/username/yourscript.php
# crontab -e
00 * * * * /home/username/yourscript.php
【讨论】:
【参考方案2】:脚本应该有执行权限。给它
chmod +x /var/www/devicecheck.php
同时检查 /var/log/syslog
是否有错误。
【讨论】:
【参考方案3】:我让它与wget 一起工作。您可能必须先安装 wget。之后它将允许您从 cronjob 运行 php 脚本。 语法如下:
* 01 * * */usr/local/bin/wget "http://localhost/devicecheck.php"
/usr/local/bin/wget 指向安装 wget 的目录。 如果您不希望输出,只需添加“-O /dev/null”,如下所示:
* 01 * * */usr/local/bin/wget "http://localhost/devicecheck.php" -O /dev/null
也可以在url中传递参数:
* 01 * * */usr/local/bin/wget "http://localhost/devicecheck.php?task=somevalue" -O /dev/null
【讨论】:
为什么要投反对票?请提供反馈,这样我可以做得更好! 我不知道为什么有人反对你,但是你不需要使用 wget。在本地运行它可以工作。只需给您的 php 文件执行权限。而且,如果你想每小时运行一次,它应该是 00 * * * * 命令。以上是关于使用 crontab 运行 PHP 文件的主要内容,如果未能解决你的问题,请参考以下文章