PHP定时执行程序脚本的例子总结

今天分享一个超简单直接的PHP定时执行的小代码,关掉浏览器,PHP脚本也能后继续执行!

用web浏览器定时刷新今天想到用sleep函数来实现php 自动定时执行。只要php能运行即可。

由于代码少,这里给个例子直接解释:

 代码如下 复制代码

<?php

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

set_time_limit(20);//程序超时时间,单位秒;通过set_time_limit(0)可以让程序无限制的执行下去;当用了set_time_limit()函数设置运行时间,sleep()函数在执行程序时的持续时间将会被忽略掉

$interval=5;//每隔多少秒运行,单位:秒

do{
//这里是你要执行的代码
$i = 1;
$num_file = "number.txt";
$fp = fopen($num_file,"r");
$buf = fread($fp,filesize($num_file));
fclose($fp);

$number = file_get_contents($num_file);
$number = $number+$i;
$fp = fopen($num_file,"w");
fwrite($fp,$number);
fclose($fp);
echo $number;

//等待执行的时间
sleep($interval);
}
while(true);

?>

上面方法如果关了浏览器好像就不行了,我们可以尝试使用平台的计划任务来处理

1、windows 的计划任务
2、linux的脚本程序

代码如下:
PHP

 代码如下 复制代码

<?php
 if($_GET['ac']=='stop')
 exit();
 sleep(5);
 $name=time();
 $fp=fopen("$name.txt",'w');
 fwrite($fp,time());
 fclose($fp);
 $fp = fsockopen('localhost', 80, $errno, $errmsg);
 fputs($fp, "GET /test/time.php\r\n\r\n");
 fclose($fp);
 ?>

在浏览器里执行一下http://localhost/test/time.php
则会在test 文件夹下每隔5秒自动创建一个以当前时间戳命名的txt文件,并写入当前时间戳
可以发现即使关闭了浏览器。这个脚本还是会每5秒执行一次。
这样就达到了定时执行的目的。
如果是要按时间点执行,比如每天 1点钟的时候执行。
那么也只需要小小修改一下也能够实现。
当然这只是一种解决思路,至于实际应用,还要再探索一番

还有一种实现方法:利用死循环,原理差不多

PHP

 代码如下 复制代码

<?php
ignore_user_abort(true);
set_time_limit(0);while(1){
$fp  = fopen('time_task.txt',"a+");
$str = date("Y-m-d h:i:s")."n";
fwrite($fp,$str);
fclose($fp);
sleep(1800);    //半小时执行一次
if(!file_exists('1.txt'))
     exit();          //在目录下建立一个文件1.txt,如果文件存在一直执行,如果文件不存在则退出
}
?>

补充这样也可以

<?php
ignore_user_abort();//关闭浏览器后,继续执行php代码
set_time_limit(0);//程序执行时间无限制
$sleep_time = 5;//多长时间执行一次
$switch = include 'switch.php';
while($switch){
$switch = include 'switch.php';
$fp = fopen('test.txt','a+');
fwrite($fp,"这是一个php博客:phpddt.com $switch \n");
fclose($fp);
sleep($sleep_time);
}
exit();

?>

时间: 2024-09-24 23:04:25

PHP定时执行程序脚本的例子总结的相关文章

C#如何定时执行程序(例如每天晚上12:00)

程序|定时|执行 C#如何定时执行程序(例如每天晚上12:00)-------------------------------------------------------------------------------- 类似于java里面的Timer.Schedule  TimeTask谢谢 -------------------------------------------------------------------------------- c#也有timer~~System.T

Asp.net定时执行程序

 用Timer解决问题的思路很简单,首先设定Timer类的Interval属性(单位是毫秒),也就是时间间隔:然后在Timer的Elapsed的事件里写执行代码,每过一个设置好的Interval时间间隔,将执行一次Elapsed中的事件 (这和VB程序中的Timer控件基本没有区别). 那知道了用什么类,这些代码要写在哪里呢?把代码写在Global.asax件中,在VS的项目上右键,点添加-->新建项,选"全局应用程序类",项目中就会有Global.asax文件了. 为了表达清楚

IIS应用池回收造成Application_Start中定时执行程序停止的问题的解决方法_实用技巧

而这段时间又没有人再次访问网站,结果在Application_Start中的定时执行程序代码就没有再执行,在网上搜索一番,找到了解决办法,现和大家一起分享交流,原理就是在应用程序结束时发出一个Web请求访问网站,启动Application_Start. 复制代码 代码如下: void Application_End(object sender, EventArgs e) { // 在应用程序关闭时运行的代码 //解决应用池回收问题 System.Threading.Thread.Sleep(50

System.Timers.Timer定时执行程序示例代码_实用技巧

System.Timers.Timer 定时执行程序 复制代码 代码如下: System.Timers.Timer t = new System.Timers.Timer(5000); //设置时间间隔为5秒 private void Form1_Load(object sender, EventArgs e) { t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_TimesUp); t.AutoReset = false; //每

nginx日志定时切割脚本的一些例子

每天自动nginx日志切割脚本  代码如下 复制代码 [bash] #!/bin/bash #先把日期赋值到变量,因为是在第二天0点后执行,所以日期应该获取前一天的,如20120903 todaydate=`date –date='yesterday' "+%Y%m%d"` #把网站的子目录日志枚举一下 for site in `ls -l /home/log/ | grep -v "^d" |awk '{print $NF}'` #移动昨天的日志到新的位置,重命名

定时执行php文件例子(php计划任务)

WINDOWS中设置计划任务执行PHP文件 1.写一个PHP程序,命名为test.php,内容如下所示:  代码如下 复制代码 <? $fp = fopen("test.txt", "a+"); fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!n"); fclose($fp); ?> 程序大胆地写,什么include/require尽管用,都没问题 2.新建Bat文件,命名为te

FreeBSD定时执行程序(cron)

Unix系统提供了cron和at命令,使系统和用户可以定时运行一定的程序,而不需手工启动. 使用cron用于周期性的执行一个命令,为了使用它,必须编辑crontab文件.系统缺省的/etc/crontab 文件为: # /etc/crontab - root's crontab for FreeBSD # # $Id: crontab,v 1.13 1996/01/06 22:21:37 ache Exp $ # From: Id: crontab,v 1.6 1993/05/31 02:03:

OSX定时执行脚本

1.前言 最近需要一个自动化请求一个地址获取信息,我为此制作一个nodejs脚本,命令行里输入: 这里的 1000 就是运行的次数,但是不能输入很大的值,否则服务器一直返回error:一个折衷的方法就是每隔半分钟启动一下这个脚本,这就需要在OSX中定时运行程序: 到网上找了一下教程,文章 OSX系统添加定时任务 讲解得不错,使用 crontab 和 launchctl 都可以启动定时任务,推荐使用后者: 2.行动 2.1.编写脚本 要想自动化,必须要有shell脚本,其实也很简单,将下列名字保存

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

查看event是否开启 复制代码 代码如下: show variables like '%sche%'; 将事件计划开启 复制代码 代码如下: set global event_scheduler =1;   创建存储过程test   复制代码 代码如下: CREATE PROCEDURE test () BEGIN update examinfo SET endtime = now() WHERE id = 14; END; 创建event e_test 复制代码 代码如下: create e