如何在 php 中运行 cron 作业


How to run cron job in php

我有 php 函数,我想每 15 分钟运行一次。我发现了一些这样的问题:

如何制作一个 cron 来执行 php 脚本?

就我而言,我应该使用它:

*/15 * * * * /usr/local/bin/php -q /path/to/my/file.p

但是我应该在终端中运行此命令还是将其放在我的文件中?一旦执行,它会一直运行还是会有时间限制?

谢谢!

PHP 不运行 cron 作业,你的服务器(或操作系统(正在这样做。有两种方法可以让你的 cron 作业工作:

#1

使用 shell 命令 crontab .命令crontab -l将列出用户的所有现有 cronjob(很可能还没有(。 crontab -e将打开一个编辑器窗口,您可以在其中将 you cron 作业作为新行放入。保存,您的 cron 作业现在正在运行。 再crontab -l一次,你会看到它。 crontab -r删除所有持续作业。

您还可以从文件启动 cron 作业。只需键入crontab filename(例如。 crontab textfile.txt (

或者,您也可以从 PHP 中启动它。只需将您的 cron 作业放入一个文件中并通过exec()启动它,如下所示:

file_put_contents( 'textfile.txt', '*/15 * * * * /usr/local/bin/php -q /path/to/my/file.php' );
exec( 'crontab textfile.txt' );

#2

如果您在系统上具有管理员权限,则可以在/etc/cron.d/中创建文件(例如,将其称为my_cronjob(并将cron作业放在那里。在这种情况下,您可能希望以用户身份运行它(而不是管理员,这将是相当不安全的(。这很容易做到,只需像这样添加用户名:

*/15 * * * * user_name /usr/local/bin/php -q /path/to/my/file.p

(在这种情况下,cron 作业将不会在 crontab -l 下列 (


回答您的第二个问题:只要 cron 作业在crontab -l中列出,或者只要文件位于 cron 作业/etc/cron.d在您的情况下,每 15 分钟运行一次。

10 * * * * /usr/bin/php /www/virtual/username/cron.php > /dev/null 2>&1主要有两个部分:

第一部分是"10 * * * *"。这是我们安排计时器的地方。该行的其余部分是命令,因为它将从命令行运行。此示例中的命令本身包含三个部分:

"/usr/bin/php"。PHP 脚本通常不能自行执行。因此,我们需要通过 PHP 解析器运行它。"/www/virtual/username/cron.php"。这只是脚本的路径。">/dev/null 2>&1"。这部分处理脚本的输出。稍后会详细介绍。

请阅读本教程 http://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800