ThinkPHP项目中使用Crontab实现定时任务推送消息的详细教程

今天做项目的时候,每天早上需要使用定时任务给用户发送数据、推送消息。该项目是使用thinkphp构建的。但是tp5没有合适的方法。经过搜索,我得出的结论是使用crontab是最有效的方法。下面小编就给大家介绍一下它的使用方法。

ThinkPHP项目中使用Crontab实现定时任务推送消息的详细教程

#1.首先登录Linux服务器,crontab -l,使用service crond status查看运行状态。

查看crontab任务列表

显然,这个centos已经安装了crontab。如果系统没有安装,请自行安装并测试。

2.创建php文件(php脚本)

2.1 然后手动编写测试脚本。我在数据库中创建了一张表t,并设置了id自增和i字段;

数据表

2.2 创建php文件。这里我创建了一个1.php文件,代码如下:

$link = mysqli_connect(

'****', /* 连接MySQL的主机地址*/

'root', /* 作为 MySQL 用户名连接的用户 */

'****', /* 用于连接 MySQL 的密码 */

'数据库名称'); /* 查询连接数据库的默认数据库名称 */

如果(!$链接){

printf("无法连接到 MySQL 服务器。错误代码:%s ", mysqli_connect_error());

出口;

}别的{

$sql="插入 t(i) 值('123456')";

if ($link->query($sql) == TRUE) {

echo "插入成功";

} 别的 {

echo "插入失败";

/* 关闭连接 关闭连接 */

mysqli_close($link);

2.3 将修改后的文件上传到服务器目录。我这里上传的目录是/home/centos/1.php,然后检查权限是否为777,如果不是,chmod 777 /home/centos/1.php来更改权限。

3.使用crontab添加php定时任务

3.1 使用命令添加我们的定时任务

在控制台输入crontab -e。这时,我们就会进入vi编辑模式。按i键进入编辑模式,编写我们的计划任务。如果不小心输出错误:q!退出,:wq 保存!

前两个是系统自带的自动执行任务。新手不明白他们的意思。忽略他们。稍后我们将附加我们自己的计划任务代码。下面六行是每十秒执行一次php脚本。

*/1 * * * * /usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &

0 0 * * * /usr/local/qcloud/YunJing/YDcrontab.sh > /dev/null 2>&1 &

* * * * * /usr/local/bin/php /home/centos/1.php

* * * * * 睡眠 10; /usr/local/bin/php /home/centos/1.php

* * * * * 睡眠 20; /usr/local/bin/php /home/centos/1.php

* * * * * 睡眠 30; /usr/local/bin/php /home/centos/1.php

* * * * * 睡眠 40; /usr/local/bin/php /home/centos/1.php

* * * * * 睡眠 50; /usr/local/bin/php /home/centos/1.php

然后我们重新启动crontab,避免不执行。服务crond重启,然后观察我们的数据表是否正常插入数据。

注意事项

第一次运行,执行不成功。我到处寻找问题。看了操作日志,我不明白。如果这里执行失败,就要看三点:第一,文件权限,第二,php文件的路径,第三,php的安装路径。一定要小心。我的 /usr/local/bin/php 路径有错误。进入目录发现没有php.ini文件。

图片.png

当然,你可以使用which php命令来检查你自己的php路径,并确保它是准确的。

图片.png

将脚本修改为

* * * * * 睡眠 10; /usr/local/bin/php /home/centos/1.php

* * * * * 睡眠 20; /usr/bin/php /home/centos/1.php

* * * * * 睡眠 30; /usr/bin/php /home/centos/1.php

* * * * * 睡眠 40; /usr/bin/php /home/centos/1.php

* * * * * 睡眠 50; /usr/bin/php /home/centos/1.php

查看计划任务并重启计划任务

图片.png

查看我们的数据表,发现数据在不断地自动添加到表中,并且成功完成。

图片.png

crontab知识补充

分钟 小时 日 月 周 命令

在:

分钟:表示分钟,可以是 0 到 59 之间的任意整数。

hour:表示小时,可以是0到23之间的任意整数。

day:表示日期,可以是1到31之间的任意整数。

Month:表示月份,可以是1到12之间的任意整数。

week:表示一周中的第几天,可以是0到7之间的任意整数,其中0或7代表星期日。

command:要执行的命令可以是系统命令,也可以是自己写的脚本文件。

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

53阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

44阅读

php一句话木马,一句话木马ctf

2026年10月05日

48阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

50阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

47阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

42阅读