如何在PHP中运行cron作业

时间:2016-02-01 19:18:52

标签: php cron

我有php功能,每隔15分钟就会运行一次。我发现了一些像这样的问题:

  

How can I make a cron to execute a php script?

在我的情况下我应该使用它:

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

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

谢谢!

2 个答案:

答案 0 :(得分:3)

PHP不运行cron作业,您的服务器(或操作系统)正在执行此操作。有两种方法可以让你的cron工作起作用:

#1

使用shell命令crontab。命令crontab -l将列出您的用户的所有现有cronjobs(很可能还没有)。 crontab -e将打开一个编辑器窗口,您可以在其中输入作为新行的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中的监听,或者只要文件位于/etc/cron.d cron作业正在运行,你的情况,每15分钟一次。

答案 1 :(得分:2)

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

第一部分是“10 * * * *”。这是我们安排计时器的地方。 该行的其余部分是从命令行运行的命令。 本例中的命令本身有三个部分:

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

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