Home  >  Article  >  php教程  >  PHP定时执行程序脚本的例子总结

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

WBOY
WBOYOriginal
2016-05-23 08:34:071188browse

PHP定时执行程序脚本我写过不少文章不过都被那些大站采集过去了,结果百度算法有问题大站有排名我的没有,下面我今天再来给各位整理一些不错的定时执行程序的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[&#39;ac&#39;]==&#39;stop&#39;) 
    exit(); 
    sleep(5); 
    $name=time(); 
    $fp=fopen("$name.txt",&#39;w&#39;); 
    fwrite($fp,time()); 
    fclose($fp); 
    $fp = fsockopen(&#39;localhost&#39;, 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(&#39;time_task.txt&#39;,"a+"); 
    $str = date("Y-m-d h:i:s")."n"; 
    fwrite($fp,$str); 
    fclose($fp); 
    sleep(1800);    //半小时执行一次 
    if(!file_exists(&#39;1.txt&#39;)) 
         exit();    //在目录下建立一个文件1.txt,如果文件存在一直执行,如果文件不存在则退出 
    }

     

补充这样也可以:

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


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn