php定时运行某个网页的方法

2014年06月03日 19:46 by:老修--走失的镜头盖

windows IIS服务器定时运行php的方法

第一. 新建一个 test.bat 可执行文件,拷贝下面的内容并保存:

  1. C:wampbinphpphp5.4.12php.exe-q D:wwwtest.php
前面是php的安装目录, 后面是要运行的php程序.

第二. 建立WINDOWS计划任务:

开始–>控制面板–>任务计划–>添加任务计划
选择第一步建立的test.bat文件
设置时间和密码(登陆WINDOWS的)

保存即可。 可以右键计划任务点“运行”试试

Linux 服务器设置定时执行php程序的方法

Windows有它的任务计划,而Linux对应的功能是crontab。

crontab简介

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρόνος),原意是时间。  通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

crontab用法

crontab的格式如下面:

f1 f2 f3 f4 f5 program

其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行程式的路径。

  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推
  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
  • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
  • 当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推

管理员登录SSH,输入命令crontab -e编辑crontab文件,根据上面的格式输入并保存。

crontab例子

每月每天每小时的第 0 分钟执行一次 /bin/ls :

  1. 0 * * * * /bin/ls

在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :

  1. */20 6-12 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信给 alex@domain.name :

  1. 0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata

每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"

  1. 20 0-23/2 * * * echo "haha"

晚上11点到早上8点之间每两个小时,早上8点

  1. 0 23-7/2,8 * * * date

在hp unix,中,每20分钟执行一次,表示为:0,20,40 * * * * 而不能采用*/n方式,否则出现语法错误

crontab用法其实很容易掌握,懂得使用crontab,对网站和服务器维护起到很大的帮助,比如定时备份,定时优化服务器等。

使用php用"长连接"持续执行某段代码

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

PHP定时执行的代码:

  1. <?php
  2. ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
  3. set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去
  4. $interval=5;// 每隔5s运行
  5.  
  6. //方法1--死循环
  7. do{
  8.     echo '测试'.time().'<br/>';
  9.     sleep($interval);// 等待5s   
  10. }while(true);
  11.  
  12. //方法2---sleep 定时执行
  13.     require_once './curlClass.php';//引入文件
  14.      
  15.     $curl =new httpCurl();//实例化
  16.     $stime =$curl->getmicrotime();
  17.     for($i=0;$i<=10;$i++){
  18.          
  19.         echo '测试'.time().'<br/>';
  20.         sleep($interval);// 等待5s
  21.          
  22.     }
  23.     ob_flush();
  24.     flush();
  25.     $etime =$curl->getmicrotime();
  26.     echo '<hr>';
  27.     echo round(($etime-stime),4);//程序执行时间
  28. ?>