PHP定时执行计划任务

摘要:PHP不支持多线程,有时候处理问题不是那么爽,今天谈论一下PHP定时执行的方法

PHP定时执行的三种方式实现

1、windows 的计划任务 
2、linux的脚本程序 
3、让web浏览器定时刷新

具体实现

windows计划任务

PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本,具体可以参考:http://www.cnblogs.com/whoknows/articles/2228577.html

linux 的脚本实现

这里主要使用到crontab这个命令,

使用方式 :

crontab   filecrontab [ -u user ] [ -u user ] { -l | -r | -e }

说明 :

crontab 是用来让使用者在固定时间或固定间隔执行程式之用

使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性

可以参看:http://www.centos.bz/2011/07/php-cron-job-linux-crontab/

PHP实现定时执行计划任务

使用php让浏览器刷新需要解决几个问题

  1. PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)
  2. 如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
  3. 如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行

PHP定时执行的代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<?php

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.

set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去

$interval=5;// 每隔5s运行

//方法1--死循环

do{

    echo ‘测试‘.time().‘<br/>‘;

    sleep($interval);// 等待5s   

}while(true);

//方法2---sleep 定时执行

    require_once ‘./curlClass.php‘;//引入文件

    

    $curl = new httpCurl();//实例化

    $stime = $curl->getmicrotime();

    for($i=0;$i<=10;$i++){

        

        echo ‘测试‘.time().‘<br/>‘;

        sleep($interval);// 等待5s

        

    }

    ob_flush();

    flush();

    $etime = $curl->getmicrotime();

    echo ‘<hr>‘;

    echo round(($etime-stime),4);//程序执行时间


1

 

测试的时候发现这个效率并不是很高,

总结:

个人感觉PHP定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给shell来做吧,比较那才是王道。

ps:那个死循环的方法好像是恶意攻击网站经常使用的方法

PHP定时执行计划任务

时间: 2024-10-08 15:46:44

PHP定时执行计划任务的相关文章

Oracle定时执行计划任务

10g版本引入DBMS_SCHEDULER来替代先前的DBMS_JOB在命令窗口输入 --查看数据库中定时任务的最多并发数show parameter job_queue_processes 如果设为0,那么数据库定时作业是不会运行的 --修改方法:alter system set job_queue_processes=10 实例:每隔一分钟自动向job_test表中插入当前的系统时间.

thinkphp 定时执行php文件--windows系统任务计划

实现思路如下: 通过win的"任务"功能来定时执行一个bat文件,bat文件会调用php.exe文件,php.exe可以传递参数指定执行哪个类和方法 方法如下: 一,thinkphp开启cli支持 1.tp正好支持cli命令模式,手册的路径为13.7.4 如果是用的其他框架不支持cli,那么只能直接写程序了,其实就是写面向过程的最基础的php代码. 2.在入口文件下开启命令,加入一句 define('MODE_NAME', 'cli'); 网站一般还有可以通过网页访问的模块,所以可以新

Windows Server 2008中使用计划任务定时执行BAT批处理文件图文教程

这篇文章主要介绍了Windows Server 2008中使用计划任务定时执行BAT批处理文件,这样就可以定时执行自己的任务了. 首先Windows Server 2008不同于其他服务器操作系统和Windows Server 2003有着很大的区别,计划任务的名称是"任务计划程序"不在控制面板里,而是在"管理工具"里. 由于服务器需要做些任务,定时执行,自己写程序吧,麻烦,所以采用BAT进行代替操作,网络上很多人都在说每分钟执行怎么配置,今天我们就配置一下. 打开

MySQL定时执行脚本(计划任务)命令实例

1 在mysql中我们可以直接进行一些参数设置让它成定时为我们执行一些任务了,这个虽然可以使用windows或者linux中的计划任务实现,但是mysql本身也能完成 2 3 查看event是否开启 4 复制代码 代码如下: 5 6 show variables like '%sche%'; 7 将事件计划开启 8 复制代码 代码如下: 9 set global event_scheduler =1; 10 11 12 创建存储过程test 13 14 复制代码 代码如下: 15 16 CREA

Windows Server 2012和2008中使用计划任务定时执行BAT批处理文件 定时备份mysql数据

MySQL 安装位置:D:\Program Files\MySQL\MySQL Server 5.0\data 如图: 数据库名称为:952game数据库备份目的地:d:\db_bak\ (你想把数据库备份到哪个盘的路径)我想备到D盘的db-bak目录下面============================新建db_bak.bat,写入以下代码 我的数据库地址 我备份的文件地址:  我的db-bak.dat 文件 net stop mysqlxcopy "E:\Server\mysql\My

win7计划任务定时执行PHP脚本设置图解

做php开发的朋友有时候会希望自己的电脑能每天定时的运行一下某个脚本,但定时执行php脚本这种概念似乎多半是在linux中才提到,下面这篇文章主要和大家分享一下在win7下如何设置计划任务,以实现定时执行我们的php脚本. 1.如下图依次选择 "开始"--->"所有程序"--->"附件"--->"系统工具"--->"务计划程序" 2.在打开的面板中选择"创建任务"

Windows Server 2008中使用计划任务定时执行BAT bat进行PHP脚本的执行

Windows Server 2008中使用计划任务定时执行BAT bat进行PHP脚本的执行 2016年01月03日 17:36:00 持之以恒 阅读数:5520 标签: windows定时任务.bat 更多 个人分类: 定时任务 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq1355541448/article/details/50451607 一.首先进行任务管理器设置  每隔1分钟执行.BAT 文件配置 首先Windows Serv

ASP.NET MVC4计划任务实现方法(定时执行某个功能)

系统中定时执行某个任务是比较常用的功能,如一个部门定期向上级部门上报数据是一个典型的例子,下面就简单说说在.net mvc中如何实现定时执行某个功能的方法. 1.首先修改Glocal.asax文件,在Application_Start方法最下面加入: //定义定时器 //1000表示1秒的意思 System.Timers.Timer myTimer = new System.Timers.Timer(1000); //TaskAction.SetContent 表示要调用的方法 myTimer.

ASP.NET MVC计划任务实现方法(定时执行某个功能)

系统中定时执行某个任务是比较常用的功能,如一个部门定期向上级部门上报数据是一个典型的例子,下面就简单说说在.net mvc中如何实现定时执行某个功能的方法. 1.首先修改Glocal.asax文件,在Application_Start方法最下面加入: //定义定时器 //1000表示1秒的意思 System.Timers.Timer myTimer = new System.Timers.Timer(1000); //TaskAction.SetContent 表示要调用的方法 myTimer.