用ignore_user_abort函数实现php计划任务

转自:http://blog.meiu.cn/post/36/1/1/
说到计划任务大家可能都想到用crontab来实现。可是并不是所有人都是使用linux系统,也不是所有人都有独立服务器。这时候如何用php来实现计划任务呢。

函数- ignore_user_abort(),这个函数可以帮助我们实现像linux中的cron一样实现计划任务,下面一起来看下该如何来实现。

该函数按照字面意思就是“忽略用户中断”,就是使用了该函数的php脚本不管用户有没有退出都会执行下去。

配合set_time_limit 和一个死循环就可以实现计划任务,这样在循环体中,去查询是否有任务需要执行!

例子如下:


<?php
     ignore_user_abort(); // run script in background
     set_time_limit(0); // run script forever
     $interval=60*15; // do every 15 minutes...
     do{
        // add the script that has to be ran every 15 minutes here
        // ...
        sleep($interval); // wait 15 minutes
    }while(true);
?>

但是这个方法也有一个问题,就是当重启了apache之后,脚本就被终止了。


( ! ) Warning: Missing argument 1 for cwppos_show_review(), called in /data/www/enjoyphp/wp-content/themes/flat/content-single.php on line 29 and defined in /data/www/enjoyphp/wp-content/plugins/wp-product-review/includes/legacy.php on line 18
Call Stack
#TimeMemoryFunctionLocation
10.0001354984{main}( ).../index.php:0
20.0001355272require( '/data/www/enjoyphp/wp-blog-header.php' ).../index.php:17
30.187310153544require_once( '/data/www/enjoyphp/wp-includes/template-loader.php' ).../wp-blog-header.php:19
40.188510224688include( '/data/www/enjoyphp/wp-content/themes/flat/single.php' ).../template-loader.php:74
50.278310783280get_template_part( ).../single.php:5
60.278310783800locate_template( ).../general-template.php:167
70.278310783896load_template( ).../template.php:643
80.278310784280require( '/data/www/enjoyphp/wp-content/themes/flat/content-single.php' ).../template.php:686
90.283610769392cwppos_show_review( ).../content-single.php:29

2 评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注