如何使用PHP创建cron作业?

use*_*520 93 php cron

我是新手使用cron工作.我甚至不知道如何写它.我试图从互联网上搜索,但我仍然不太了解它.我想创建一个每分钟执行我的代码的cron作业.我正在使用PHP来创建它.它不起作用.

run.php (将每分钟执行的代码)

<?php

echo "This code will run every minute";

?>
Run Code Online (Sandbox Code Playgroud)

cron.php

<?php

$path = dirname(__FILE__);
$cron = $path . "/run.php";
echo exec("***** php -q ".$cron." &> /dev/null");

?>
Run Code Online (Sandbox Code Playgroud)

假设这两个文件在同一个文件夹中.

代码是我做错了吗?如果错了,请告诉我如何解决它.

Nik*_*nov 57

这是迄今为止我发现的PHP代码的最佳解释:

http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php--net-19428

简而言之:

虽然安排新工作的语法乍一看似乎令人生畏,但实际上,一旦你将其分解,它实际上相对简单易懂.一个cron作业将始终有五列,每列代表一个按时间顺序排列的"运算符",后跟完整路径和执行命令:

*****home/path/to/command/the_command.sh

每个时间顺序列与任务的时间表具有特定的相关性.它们如下:

Minutes represents the minutes of a given hour, 0-59 respectively.
Hours represents the hours of a given day, 0-23 respectively.
Days represents the days of a given month, 1-31 respectively.
Months represents the months of a given year, 1-12 respectively.
Day of the Week represents the day of the week, Sunday through Saturday, numerically, as 0-6 respectively.
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

因此,例如,如果一个人想在每个月的第一天安排一个任务,那么它看起来像这样:

0 0 1**home/path/to/command/the_command.sh

如果我们想安排一个任务在每个星期六上午8:30运行,我们会按如下方式编写:

30 8**6 home/path/to/command/the_command.sh

还有许多运营商可用于进一步定制日程安排:

Commas is used to create a comma separated list of values for any of the cron columns.
Dashes is used to specify a range of values.
Asterisksis used to specify 'all' or 'every' value
Run Code Online (Sandbox Code Playgroud)

请访问完整文章的链接,它解释说:

  1. 如果要手动输入/编辑cronjob,格式是什么?
  2. 如何使用PHP和SSH2库作为用户进行身份验证,您要编辑哪个crontab.
  3. 完整的PHP类,包含用于身份验证,编辑和删除crontab条目的所有必要方法.

  • 这个答案提供了链接,但本身并没有解释“如何使用 PHP 创建 cron 作业”。 (9认同)

Ali*_*man 32

与尝试运行cron.php的方式相同,您可以运行另一个PHP脚本.但是,您必须通过CLI界面执行此操作.

#!/usr/bin/env php
<?php
# This file would be say, '/usr/local/bin/run.php'
// code
echo "this was run from CRON";
Run Code Online (Sandbox Code Playgroud)

然后,在crontab中添加一个条目:

* * * * * /usr/bin/php -f /usr/local/bin/run.php &> /dev/null
Run Code Online (Sandbox Code Playgroud)

如果run.php脚本具有可执行权限,则可以直接在crontab中列出,也可以不使用/ usr/bin/php部分.脚本中的'env php'部分将找到实际运行PHP代码的相应程序.因此,对于"可执行"版本,请向文件添加可执行权限:

chmod +x /usr/local/bin/run.php
Run Code Online (Sandbox Code Playgroud)

然后,将以下条目添加到crontab:

* * * * * /usr/local/bin/run.php &> /dev/null
Run Code Online (Sandbox Code Playgroud)


小智 11

添加到Alister,您可以通过在服务器上的ssh会话中输入crontab -e来编辑crontab(通常不是这种情况).

星星代表(*表示每个单位):

[Minute] [Hour] [Day] [Month] [Day of week (0 =sunday to 6 =saturday)] [Command]
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多相关信息.


小智 5

最好将Cron项目与 Linux cronjob 结合使用来完成此任务。它允许您在 PHP 代码中配置运行时间、支持后台作业并且易于使用。

第一步每分钟调用一个 PHP 脚本:

* * * * * /usr/local/bin/run.php &> /dev/null
Run Code Online (Sandbox Code Playgroud)

第二步使用cron/cron包直接在 PHP 中配置运行时间。

$deprecatedStatus = new ShellJob();
$deprecatedStatus->setCommand('cd /app && /usr/local/bin/php cron/updateDeprecatedStatus.php');
$deprecatedStatus->setSchedule(new CrontabSchedule('* * * * */2'));


$displayDate = new ShellJob();
$displayDate->setCommand('cd /app && /usr/local/bin/php cron/updateDisplayDate.php');
$displayDate->setSchedule(new CrontabSchedule('* * * * */5'));
Run Code Online (Sandbox Code Playgroud)

您在链接存储库中找到了如何使用的详细信息。


ram*_*610 -3

创建一个像这样的 cronjob 每分钟都工作

*       *       *       *       *       /usr/bin/php path/to/cron.php &> /dev/null
Run Code Online (Sandbox Code Playgroud)

  • 我认为我们正在寻找使用 php 创建 cronjob 的解决方案,而不是使用任何终端或 cpanel。我也想只使用 php 找到这个解决方案。 (6认同)