当前位置: 首页 > 知识库问答 >
问题:

如何使用PHP创建cron作业?

窦宏旷
2023-03-14

我不熟悉使用cron job。我甚至不知道怎么写。我试着在网上搜索,但还是不太懂。我想创建一个cron作业,它每分钟都会执行我的代码。我正在使用PHP创建它。它不起作用。

示例

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

<?php

echo "This code will run every minute";

?>

cron.php

<?php

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

?>

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

是我做错的代码吗?如果有问题,请告诉我如何解决。

共有3个答案

孙震博
2023-03-14

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

星星代表(*表示本单元的每个部分):

[Minute] [Hour] [Day] [Month] [Day of week (0 =sunday to 6 =saturday)] [Command]

你可以在这里读到更多关于这个的信息。

冯通
2023-03-14

就像你试图运行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";

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

* * * * * /usr/bin/php -f /usr/local/bin/run.php &> /dev/null

如果run.php脚本具有可执行权限,它可以直接列在crontab中,而不 /usr/bin/php部分。脚本中的env php部分将找到合适的程序来实际运行PHP代码。因此,对于可执行版本-向文件添加可执行权限:

chmod +x /usr/local/bin/run.php

然后,在crontab中添加以下条目:

* * * * * /usr/local/bin/run.php &> /dev/null
白念
2023-03-14

这是到目前为止我发现的PHP代码的最佳解释:

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

简而言之:

尽管安排新工作的语法乍看起来令人望而生畏,但一旦你分解它,实际上理解起来相对简单。cron作业总是有五个列,每个列代表一个按时间顺序排列的“操作符”,后面跟着要执行的完整路径和命令:

*****home/path/to/command/the_命令。嘘

每个按时间顺序排列的列都与任务的时间表有特定的相关性。详情如下:

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.

例如,如果一个人想把一项任务安排在每个月的第一天上午12点,它会是这样的:

01**home/path/to/command/the_命令。嘘

如果我们想安排一个任务在每周六早上8:30运行,我们会写如下:

30 8**6 home/path/to/command/the_命令。嘘

还有一些运算符可以用来进一步定制时间表:

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

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

  1. 如果要手动输入/编辑cronjob,它的格式是什么
  2. 如何将PHP与SSH2库结合使用,以用户身份进行身份验证,您将编辑哪个crontab
  3. 完整的PHP类,包含身份验证、编辑和删除crontab条目所需的所有方法
 类似资料:
  • 问题内容: 我希望能够以编程方式添加新的cron作业,最佳方法是什么? 从我的研究来看,我似乎可以转储当前的crontab,然后附加一个新的crontab,然后将其重新管道到crontab中: 有没有更好的办法? 问题答案: 对我来说一直很好。 您应该考虑一个稍微复杂的脚本,它可以完成三件事。 附加crontab行;确保它不存在。当它已经存在时添加是不好的。 删除crontab行。也许只有警告,如

  • 问题内容: 我设法发送了多封电子邮件(请在此处查看)。我被困于通过cron发送自动电子邮件。 这就是我需要的- 管理员发送电子邮件时,我将消息,电子邮件,事件日期存储在数据库中。现在,我试图设置一个cron作业,以将邮件发送到表中所有这些ID以及提醒我的消息。我对cron作业脚本不熟悉,任何人都可以帮助指导我编写可放在cron选项卡中的脚本的正确方法。我打算发送两封邮件- 恰好在活动开始前的一天和

  • 问题内容: 我想做一个cron作业,每隔15分钟发送一次邮件,从数据库表中获取数据。在node js中,我可以执行cron作业,但是通过PM2,我不了解代码的放置位置及其工作方式。 问题答案: 谢谢您的回答; 我以这种方式做,只是设置电子邮件 npm安装节点crontab 2. var crontab = require(’node-crontab’); var jobId = crontab.s

  • 我想用PHP在MySQL数据库中创建一个表。这是我的尝试: 但这给了我一个错误 我搜索了很多,但没有找到成功的解决方案。有人有主意吗?

  • 问题内容: 如何通过PHP脚本设置cron作业。 问题答案: 这将添加一个每天上午9:30运行的脚本。 如果从Web服务器运行此脚本,可能会遇到权限问题。为了解决这个问题,我建议使用另一种方法。 这是一种可能的解决方案。创建需要运行的脚本列表。您可以将其保存在文本文件或数据库中。创建一个脚本来读取此列表,并每分钟或每5分钟(使用cronjob)运行它。您的脚本将需要足够聪明,以决定何时运行脚本列表