php定时执行程序,php执行定时任务 linux使用crontab执行定时脚本超详细

今天做项目的时候需要用到定时任务给给用户发送数据,每天早上给用户推送消息,项目采用thinkphp搭建的,然而tp5没有合适的方式,通过搜索总结到使用crontab才是最高效的方式,以下给大家带来使用方式。

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

21eebd439b1c

查看crontab 任务列表

显然,本centos已经安装了crontab ,若系统没有安装,请自行安装测试。

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

2.1然后手动编写一个测试脚本,本人在数据库中建立了一张表t,同时设置id自增长与i字段;

21eebd439b1c

数据表

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

$link = mysqli_connect(

'****', /* The host to connect to 连接MySQL地址 */

'root', /* The user to connect as 连接MySQL用户名 */

'****', /* The password to use 连接MySQL密码 */

'dbname'); /* The default database to query 连接数据库名称*/

if (!$link) {

printf("Can't connect to MySQL Server. Errorcode: %s ", mysqli_connect_error());

exit;

}else{

$sql="insert into t(i) values('123456')";

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

echo "成功插入";

} else {

echo "插入失败" ;

}

}

/* Close the connection 关闭连接*/

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

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

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

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

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

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

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

注意事项

本人第一次运行没有执行成功,到处找问题,看了运行日志不懂,这里执行失败一定要看三点,一文件权限,二,php文件的路径,三php的安装路径。一定仔细。本人就是/usr/local/bin/php路径出错,自己进入目录发现没有php

21eebd439b1c

image.png

当然你可以使用which php命令查看自己的php路径,一定确保准确。

21eebd439b1c

image.png

修改脚本为

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

* * * * * sleep 20; /usr/bin/php /home/centos/1.php

* * * * * sleep 30; /usr/bin/php /home/centos/1.php

* * * * * sleep 40; /usr/bin/php /home/centos/1.php

* * * * * sleep 50; /usr/bin/php /home/centos/1.php

查看定时任务,并重启定时任务

21eebd439b1c

image.png

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

21eebd439b1c

image.png

crontab知识的补充

minute hour day month week command

其中:

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

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

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

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值