<?php
ignore_user_abort()//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0)// 通过set_time_limit(0)可以让程序无限制的执行下去
ini_set('memory_limit','512M')// 设置内存限制
$interval=60*30// 每隔半小时运行
do{
//ToDo
sleep($interval)// 等待5分钟
}
while(true)
二. 简单 可控型
config.php
<?php
return 1
?>
cron.php
ignore_user_abort()//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0)// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30// 每隔半小时运行
do{
$run = include 'config.php'
if(!$run) die('process abort')
//ToDo
sleep($interval)// 等待5分钟
}
while(true)
三. 简单 改进型
<?php
$time=15
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
/*
function
*/
sleep($time)
file_get_contents($url)
?>
PHP定时执行的三种方式实现
1、windows 的计划任务
2、linux的脚本程序
3、让web浏览器定时刷新
具体实现
1、windows计划任务PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本。
2、linux 的脚本实现
这里主要使用到crontab这个命令,
使用方式 :
crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e } 说明 :crontab是用来让使用者在固定时间或固定间隔执行程式之用
使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性
3、PHP实现定时执行计划任务使用php让浏览器刷新需要解决几个问题
PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit()或者修改PHP.ini 设置max_execution_time时间(不推荐)
如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行
PHP定时执行的代码:
<?phpignore_user_abort()//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0)// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30// 每隔半小时运行
do{
//这里是你要执行的代码
sleep($interval)
}while(true)
mysql定时任务自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由 *** 作系统的计划任务来执行的工作。更值得 一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而 *** 作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精 确到每分钟执行一次。对于一些对数据实时性要求比较高的应用(例如:股票、赔率、比分等)就非常适合。
如:每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去.
CREATE PROCEDURE test ()
BEGIN
update examinfo SET endtime = now() WHERE id = 14
END
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test()
2. windows、linux 的定时任务 这个就不举例了,通过脚本定时去调用mysql执行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)