1.連接處理:

在 PHP 內部,系統維護著連接狀態,其狀態有三種可能的情況:

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

當 PHP 腳本正常地運行 NORMAL 狀態時,連接為有 " /> 啦啦啦 中文 中国 免费 高清在线 ,日本乱hd高清videos,欧美506070

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

php中定時計劃任務的實現原理

根據php手冊簡單介紹一些相關的知識:

1.連接處理:

php 內部,系統維護著連接狀態,其狀態有三種可能的情況:

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

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

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

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

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

2.相關函數:

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.

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

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

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

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

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

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

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

php技術php中定時計劃任務的實現原理,轉載需保留來源!

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

主站蜘蛛池模板: 青青热久久综合网伊人 | cntv官网 | 热99RE久久精品国产 | 51国产午夜精品免费视频 | 国产精品丰满人妻AV麻豆 | 国产精品嫩草影院一区二区三区 | 久久午夜免费视频 | 午夜影视免费 | 国产精品久久人妻无码网站一区无 | 学生妹被爆插到高潮无遮挡 | 日产精品久久久久久久蜜殿 | 97人人看碰人免费公开视频 | 暖暖在线观看播放视频 | 嫩B人妻精品一区二区三区 内射一区二区精品视频在线观看 | 欧美精品一区二区三区视频 | 日本红怡院亚洲红怡院最新 | 国产精品第1页在线观看 | 国产在线亚洲精品观看不卡 | 益日韩欧群交P片内射中文 艺术片 快播 | 久久久99精品成人片中文 | 亚洲中文日韩日本在线视频 | 亚洲绝美精品一区二区 | 久久这里只有是精品23 | 爆乳啪啪无码成人二区亚洲欧美 | YY8848高清私人影院 | 无码一卡二卡三卡四卡 | 海角国精产品一区一区三区糖心 | 欧美日韩看看2015永久免费 | 2019夜夜| 国产人妻麻豆蜜桃色 | 国产精品久久久久激情影院 | 暖暖视频免费高清在线观看 视频 | 女人高潮被爽到呻吟在线观看 | 欧美久久综合性欧美 | 欧美精品一卡二卡 | 國産麻豆AVMDMD0179 | 飘雪在线观看免费完整版 | 中文字幕久久久 | 在线国产a不卡 | 亚洲国产精品一区二区第一页 | 深爱激情站 |