1.連接處理:

在 PHP 內(nèi)部,系統(tǒng)維護著連接狀態(tài),其狀態(tài)有三種可能的情況:

0 - NORMAL(正常) 1 - ABORTED(異常退出) 2 - TIMEOUT(超時)

當(dāng) PHP 腳本正常地運行 NORMAL 狀態(tài)時,連接為有 " /> 怡红院男人天堂,成人三级做爰av,免费在线观看毛片

四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

php中定時計劃任務(wù)的實現(xiàn)原理

根據(jù)php手冊簡單介紹一些相關(guān)的知識:

1.連接處理:

php 內(nèi)部,系統(tǒng)維護著連接狀態(tài),其狀態(tài)有三種可能的情況:

0 - NORMAL(正常)
1 - ABORTED(異常退出)
2 - TIMEOUT(超時)

當(dāng) php 腳本正常地運行 NORMAL 狀態(tài)時,連接為有效。當(dāng)遠(yuǎn)程客戶端中斷連接時,ABORTED 狀態(tài)的標(biāo)記將會被打開。遠(yuǎn)程客戶端連接的中斷通常是由用戶點擊 STOP 按鈕導(dǎo)致的。當(dāng)連接時間超過 php 的時限時,TIMEOUT 狀態(tài)的標(biāo)記將被打開。

可以決定腳本是否需要在客戶端中斷連接時退出。有時候讓腳本完整地運行會帶來很多方便,即使沒有遠(yuǎn)程瀏覽器接受腳本的輸出。默認(rèn)的情況是當(dāng)遠(yuǎn)程客戶端連接中斷時腳本將會退出。該處理過程可由 php.ini 的 ignore_user_abort 或由 Apache .conf 設(shè)置中對應(yīng)的"php_value ignore_user_abort"以及 ignore_user_abort() 函數(shù)來控制。如果沒有告訴 php 忽略用戶的中斷,腳本將會被中斷,除非通過 register_shutdown_function() 設(shè)置了關(guān)閉觸發(fā)函數(shù)。通過該關(guān)閉觸發(fā)函數(shù),當(dāng)遠(yuǎn)程用戶點擊 STOP 按鈕后,腳本再次嘗試輸出數(shù)據(jù)時,php 將會檢測到連接已被中斷,并調(diào)用關(guān)閉觸發(fā)函數(shù)。

腳本也有可能被內(nèi)置的腳本計時器中斷。默認(rèn)的超時限制為 30 秒。這個值可以通過設(shè)置 php.ini 的 max_execution_time 或 Apache .conf 設(shè)置中對應(yīng)的"php_value max_execution_time"參數(shù)或者 set_time_limit() 函數(shù)來更改。當(dāng)計數(shù)器超時的時候,腳本將會類似于以上連接中斷的情況退出,先前被注冊過的關(guān)閉觸發(fā)函數(shù)也將在這時被執(zhí)行。在該關(guān)閉觸發(fā)函數(shù)中,可以通過調(diào)用 connection_status() 函數(shù)來檢查超時是否導(dǎo)致關(guān)閉觸發(fā)函數(shù)被調(diào)用。如果超時導(dǎo)致了關(guān)閉觸發(fā)函數(shù)的調(diào)用,該函數(shù)將返回 2。

需要注意的一點是 ABORTED 和 TIMEOUT 狀態(tài)可以同時有效。這在告訴 php 忽略用戶的退出操作時是可能的。php 將仍然注意用戶已經(jīng)中斷了連接但腳本仍然在運行的情況。如果到了運行的時間限制,腳本將被退出,設(shè)置過的關(guān)閉觸發(fā)函數(shù)也將被執(zhí)行。在這時會發(fā)現(xiàn)函數(shù) connection_status() 返回 3。

2.相關(guān)函數(shù):

int ignore_user_abort ( [bool setting] )
This function sets whether a client disconnect should cause a script to be aborted. It will return the previous setting and can be called without an argument to not change the current setting and only return the current setting.

int connection_aborted ( void )
Returns TRUE if client disconnected.

int connection_status ( void )
Returns the connection status bitfield.

為了定時更新某一文件,需要程序自動運行,從網(wǎng)上搜到了兩種方法:ignore_user_abort() 和crontab

ignore_user_abort()函數(shù)搭配set_time_limit(0)和sleep($interval)即可實現(xiàn)程序自動運行更新,下面是一個實例
復(fù)制代碼 代碼如下:
ignore_user_abort(); //即使Client斷開(如關(guān)掉瀏覽器),php腳本也可以繼續(xù)執(zhí)行.
set_time_limit(0); // 執(zhí)行時間為無限制,php默認(rèn)的執(zhí)行時間是30秒,通過set_time_limit(0)可以讓程序無限制的執(zhí)行下去
$interval=60*5; // 每隔5分鐘運行
do{
$fp = fopen('test.txt','a');
fwrite($fp,'test');
fclose($fp);
sleep($interval); // 等待5分鐘
}while(true);

只要運行上面的頁面,然后關(guān)掉,程序就會一直運行下去。

Linux 下有種更簡單的方法,就是crontab命令

crontab命令的功能是在一定的時間間隔調(diào)度一些命令的執(zhí)行。
crontab 使用方法: crontab [ -e | -l | -r ] 文件名 -e:編輯任務(wù) -l:顯示任務(wù)信息 -r:刪除定時執(zhí)行任務(wù)信息

crontab的格式:
* * * * * Command
分 時 日 月 星期 要運行的命令

crontab的例子:

*/5 * * * * lynx http://www.jb51.NET
每5分鐘訪問一次 www.jb51.NET

0 8 * * * lynx http://www.jb51.NET
每天早上8點訪問 www.jb51.NET

0 10 6 * 1-5 lynx http://www.jb51.NET
每個月的6號和每個禮拜的星期一到星期五的早上10點訪問 www.jb51.NET

0 5 7 8 * lynx http://www.jb51.NET
8月7日早上5點訪問 www.jb51.NET

上面幾個特殊的意思:
"*"代表所有的取值范圍內(nèi)的數(shù)字,"/"代表每的意思,"*/5"表示每5個單位,"-"代表從某個數(shù)字到某個數(shù)字,","分開幾個離散的數(shù)字。

php技術(shù)php中定時計劃任務(wù)的實現(xiàn)原理,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 金三角电影| 闲章内容大全图片| 李乃文电影| 快活电影| 环太平洋豆瓣| 狂野鸳鸯| 暴雪将至电影| 《红色》电影| 意乱情迷| 深流 电视剧| 蓝眼泪简谱| 影片 - theav| 汪佳辉| 金时厚| 精神空虚贪图享乐具体表现及整改措施| 韩国一级免费| 珂尼娜| 洋葱电影| 挠丝袜| 范冰冰激情视频| 阴道电影| cctv16体育节目表今天目表| 六级词汇电子版| 成年人看| 永远是少年电影免费观看| 大连好生活| 对称度| 来月经可以喝奶茶吗| 罗伯特·肖恩·莱纳德| 追捕演员表名单| 汤唯和梁朝伟拍戏原版| 漂亮主妇 电视剧| 动漫秀场| 淮剧赵五娘| 青草国产视频| 我和我的父辈 电影| 《欲望中的女人》| 雷牧| 一路向北 免费观看 电影在线观看| 妻子的电影| 潜行在线观看|