php定時(shí)計(jì)劃任務(wù)的實(shí)現(xiàn)方法_PHP教程
推薦:PHP使用DES進(jìn)行加密與解密的方法代碼如下: //$input - stuff to decrypt //$key - the secret key to use function do_mencrypt($input, $key) { $input = str_replace(n, , $input); $input = str_replace(t, , $input); $input = str_replace(r, , $input); $key = substr(md5($key), 0, 24); $td =
我在uchome 中 分析到, uchome是這樣做的
1. 把所有的計(jì)劃任務(wù)存放到數(shù)據(jù)庫(kù)
2. 每次用戶進(jìn)行操作或打開(kāi)頁(yè)面的時(shí)候都按排序執(zhí)行一條計(jì)劃任務(wù). 也就是輪番判斷,時(shí)間到了的, 就在用戶進(jìn)程中執(zhí)行.
uchome的計(jì)劃任務(wù)代碼在 ./source/function_cron.php
上面只自己分析uchome代碼關(guān)于計(jì)劃任務(wù)大概的結(jié)果, 拋磚引玉. 希望誰(shuí)有好的方法拿出來(lái)共享.
ignore_user_abort()
我前一段時(shí)間徹底研究過(guò)計(jì)劃任務(wù),認(rèn)為計(jì)劃任務(wù)的思路很多,但最適合Web的還是觸發(fā)式的,就是類似于DZ和PHPWind的,似乎大多數(shù)web應(yīng)用也都是這么做的,再說(shuō)幾種其他的供參考
1,為了提供穩(wěn)定的觸發(fā),用crontab+wget或者ab提供定時(shí)訪問(wèn)
2,nohup + php寫(xiě)守護(hù)程序
3,直接用php寫(xiě)個(gè)死循環(huán)還提供觸發(fā),這時(shí)需要用緩存或者數(shù)據(jù)庫(kù)來(lái)協(xié)助推出循環(huán),還有必須用sleep或者usleep控制觸發(fā)頻率
4,crontab+php
5,web觸發(fā)方式,這也有區(qū)別,一種是定時(shí)觸發(fā),一種是定周期觸發(fā),DZ和PHPWind都是定時(shí)觸發(fā),我最后采用的是定周期觸發(fā)
具體的實(shí)現(xiàn)思路 很容易想,就不多說(shuō)了
自己有主機(jī)肯定用crontab來(lái)執(zhí)行命令行PHP
沒(méi)有只能寫(xiě)在代碼中了
用crontab會(huì)比較好, 如果用循環(huán)的話, 最好也要把循環(huán)和具體處理程序分開(kāi), 不然內(nèi)存會(huì)一直增加.
今天一不小心在php手冊(cè)上發(fā)現(xiàn)了這個(gè)函數(shù)-ignore_user_abort,這個(gè)函數(shù)可以幫助我們實(shí)現(xiàn)像linux中的cron一樣實(shí)現(xiàn)計(jì)劃任務(wù),下面一起來(lái)看下該如何來(lái)實(shí)現(xiàn)。
首先看下php手冊(cè)對(duì)這個(gè)函數(shù)的解釋
Description
int ignore_user_abort ([ bool $setting ] )
Sets whether a client disconnect should cause a script to be aborted.
也就是說(shuō)無(wú)論客戶端是否關(guān)閉瀏覽器,下面的程序都會(huì)執(zhí)行.
再看下其參數(shù)
Parameters
setting
If not set, the function will only return the current setting.
這個(gè)函數(shù)接受一個(gè)參數(shù),來(lái)決定是否啟用ignore_user_abort的功能。
再看其返回值:
Return Values
Returns the previous setting, as a boolean.
這里說(shuō)返回前一次的設(shè)置,并且是bool值得,經(jīng)過(guò)我的測(cè)試,這個(gè)說(shuō)法是不對(duì)的,返回的明明是int型的,不相信的話大家可以寫(xiě)一個(gè)php文件來(lái)測(cè)試下。
說(shuō)了這么多了,到底該如何用php的這個(gè)函數(shù)實(shí)現(xiàn)計(jì)劃任務(wù)呢?還跌借助另外一個(gè)函數(shù),這個(gè)函數(shù)是set_time_limit,通過(guò)set_time_limit0)可以設(shè)置程序的運(yùn)行時(shí)間為無(wú)限制,php默認(rèn)的運(yùn)行時(shí)間是30秒,通過(guò)set_time_limit(0)可以讓程序無(wú)限制的執(zhí)行下去。在程序執(zhí)行之前加上ignore_user_abort(1)和set_time_limit(0)即可以了,最終程序該如何寫(xiě)呢?給大家一個(gè)例子。
代碼如下: <?php ignore_user_abort(); // run script in background set_time_limit(0); // run script forever $interval=30; // do every 15 minutes… do{ $fp = fopen(‘text3.txt','a'); fwrite($fp,'test'); fclose($fp); sleep($interval); // wait 15 minutes }while(true); ?>
分享:php xml常用函數(shù)的集合1、DOM 函數(shù) a、DOMDocument-load() 作用:加載xml文件 用法:DOMDocument-load( string filename ) 參數(shù):filename,xml文件; 返回:如果成功則返回 TRUE,失敗則返回 FALSE。 b、DOMDocument-loadXML() 作用:加載xml代碼 用法:DOMDocument-loadXML( string source
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
PHP教程Rss訂閱編程教程搜索
PHP教程推薦
- 在PHP中全面阻止SQL注入式攻擊
- PHP網(wǎng)站開(kāi)發(fā)過(guò)程的安全知識(shí)
- php獲取$_POST同名參數(shù)數(shù)組的實(shí)現(xiàn)介紹
- PHP常用的文件操作函數(shù)經(jīng)典收藏
- PHP技巧:通過(guò)實(shí)例深入剖析require和include的用法
- PHP中使用pcntl和libevent實(shí)現(xiàn)Timer功能
- 比較簡(jiǎn)單的百度網(wǎng)盤(pán)文件直鏈PHP代碼
- 常見(jiàn)php頁(yè)面漏洞分析及相關(guān)問(wèn)題解決
- 在windows平臺(tái)上構(gòu)建自己的PHP實(shí)現(xiàn)方法(僅適用于php5.2)
- 新手如何使用PHP來(lái)創(chuàng)建RSS的閱讀器
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-php定時(shí)計(jì)劃任務(wù)的實(shí)現(xiàn)方法
。