1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > PHP脚本定时任务实现及crontab实现定时任务

PHP脚本定时任务实现及crontab实现定时任务

时间:2021-12-02 13:44:55

相关推荐

PHP脚本定时任务实现及crontab实现定时任务

由于PHP只能被用户触发,被调用,调用后会自动退出内存,没有常驻内存。所以实现定时任务都是循环的执行某一个脚本。

PHP定时任务实现主要有两个方向:

1、循环脚本本身或脚本中代码循环执行

2、服务器定时调用php

先主要介绍php脚本循环执行方案:

方案1:

脚本中的代码循环执行。这种方法会占系统资源, 长时间运行,会有一些意想不到的隐患。比如内存管理方面的问题 。

eg:

//文件config.php<?phpreturn true;//文件test.php<?phpignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去,避免超时报错 $times=5;// 每隔5秒运行一次do{$run = include 'config.php';//开关if($run){echo time().'<br>';ob_flush();//将数据从php的buffer中释放出来flush();//将释放出来的数据发送给浏览器,这里必须要有这两个函数,不然无法输出时间戳,因为该脚本一直未执行完,具体可以参考/qq_21386275/article/details/65634786sleep($times);// 等待5秒}else{die('end');}}while(true);

方案二:

循环执行脚本,而不是脚本中的代码。

eg:

<?php$isOn = 0;//开关if($isOn){$time=2;$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo time();//这里不需要下边两个函数,因为每一次echo都是脚本已经执行完了,具体参考/qq_21386275/article/details/65634786//ob_flush();//flush();sleep($time);echo "<script language='javascript' type='text/javascript'>"; echo "window.location.href='$url'"; echo "</script>";//file_get_contents($url); //实际循环脚本使用该函数或者curl函数}else{die('end');}

方案三

crontab定时任务

**1、**安装crontab

yum -y install vixie-cronyum -y install crontabs

说明:

vixie-cron 软件包是 cron 的主程序;

crontabs 软件包是用来安装、卸载、或列举用来驱动 cron 守护进程的表格的程序。

**2、**配置

cron 是 linux 的内置服务,但它不自动启动,可以用以下的方法启动、关闭这个服务:

service crond start//启动服务service crond stop//关闭服务service crond restart //重启服务service crond reload //重新载入配置service crond status //查看crontab服务状态

在CentOS系统中加入开机自动启动:

chkconfig --level 345 crond on

**3、**定时任务执行时间是写在etc/crontab文件中,下边示例是每天8点到21点,30分,访问百度,定时执行任务的日志是写在var/log/cron文件中的

30 8-21 * * * root curl

**4、**给php添加环境变量

①在/etc/profile文件最后一行添加export PATH=$PATH:/data/php/bin

②执行source /etc/profile或者./profile让其生效

③执行php -v验证其生效,执行echo $PATH查看其设置的环境变量

**5、**添加定时任务,直接编辑/etc/crontab

29 8-21 * * * root curl #28 8-21 * * * root /data/php/bin/php /data/html/test.php#28 8-21 * * * root /data/html/test.php

附:关于crontab相关说明

① /etc/crontab文件说明

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号

HOME=/ //使用者运行的路径,这里是根目录

②run-parts使用

"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了

01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本

③相关规则说明

④cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务

⑤关于crontab权限,相关更深入理解,这里不做阐述,可自行查讯资料,可参考/xingzc/p/5969777.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。