PHP实现定时任务的几种方式

PHP实现定时任务的几种方式,第1张

一. 简单

<?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定时执行的代码:

<?php

ignore_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执行


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6253256.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-19
下一篇 2023-03-19

发表评论

登录后才能评论

评论列表(0条)

保存