首頁  >  文章  >  php教程  >  PHP定时执行程序脚本的例子总结

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

WBOY
WBOY原創
2016-05-23 08:34:071189瀏覽

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();


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn