使用 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 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 crontab 运行 PHP 文件

crontab定时任务详解

Linux定时任务-crontab

linux Crontab定时备份项目案例

crontab 定时任务

Linux定时任务cron详解