激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - PHP中使用sleep函數(shù)實現(xiàn)定時任務(wù)實例分享

PHP中使用sleep函數(shù)實現(xiàn)定時任務(wù)實例分享

2020-07-24 15:03PHP教程網(wǎng) PHP教程

這篇文章主要介紹了PHP中使用sleep函數(shù)實現(xiàn)定時任務(wù)實例分享,本文給出了多個使用sleep的例子,本文還可以作為學(xué)習(xí)sleep函數(shù)的教程,需要的朋友可以參考下

在某些程序中,有一些特殊的功能需要用到定時執(zhí)行,如果熟悉Linux的朋友肯定會說這不是容易嗎,直接來個計劃任務(wù)crontab不久實現(xiàn)了嗎?這的確是可以實現(xiàn),但必須是提前知道具體的執(zhí)行時間,然后才能寫到計劃任務(wù)里去。比如凌晨兩點,上午七點,或者每天上午六點三十分等等。

然而有時候,這個時間我們無法預(yù)知,而執(zhí)行時間是程序動態(tài)生成的。然后在動態(tài)生成的時間后執(zhí)行某些程序片段,這里就不能用Linux的crontab計劃任務(wù)了,因為每次執(zhí)行的時間都是動態(tài)生成,而計劃任務(wù)需要知道一個定死了的時間。既然無法使用計劃任務(wù),那么就只能從程序本身尋找實現(xiàn)方法。

在PHP中,有一個sleep函數(shù),大概意思是程序執(zhí)行遇到sleep函數(shù)時暫停N秒后繼續(xù)往下執(zhí)行。如sleep(10)意思就是程序自上往下執(zhí)行,遇到sleep(10)語句后暫停十秒,然后繼續(xù)往下執(zhí)行。函數(shù)括號內(nèi)的參數(shù)是一個數(shù)值,代表暫停時間值,單位秒。請看下面一段代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
/**
 * sleep函數(shù)的用法
 * 瓊臺博客
 */
// 輸出當(dāng)前程序時間戳
echo time(); // out:1338088780
echo '<br />';
 
// 暫停十秒
sleep(10);
 
// 輸出時間戳
echo time(); // out:1338088790

 

以上程序執(zhí)行結(jié)果是

復(fù)制代碼 代碼如下:

1338088780
1338088790


我們來解析下執(zhí)行過程,第一步是打印當(dāng)前時間戳1338088780,然后暫停十秒,再打印時間戳。由于程序是等待了十秒然后再次打印時間戳,那么就是最后一次的時間戳肯定要比第一次打印的時間戳多十秒鐘,結(jié)果最后一次的時間戳是1338088790。

 

以上例子,我們只用了一次sleep函數(shù),頁面中可以無限制使用sleep()函數(shù)。請看以下代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
/**
 * sleep函數(shù)的用法
 * 瓊臺博客
 */
// 輸出第一次時間戳
echo time();   // out: 1338088780
echo '<br />';
 
// 暫停十秒
sleep(10);
 
// 輸出第二次時間戳
echo time();   // out: 1338088790
echo '<br />';
 
// 暫停二十秒鐘
sleep(20);
 
// 輸出第三次時間戳
echo time();   // out: 1338088810

以上程序執(zhí)行結(jié)果是

復(fù)制代碼 代碼如下:
1338088780
1338088790
1338088810


以上代碼執(zhí)行過程:
第一,打印第一次時間戳1338088780
第二,暫停十秒
第三,打印第二次時間戳 1338088790,是第一次時間戳加上十秒后的總和
第四,暫停二十秒
第五,打印第三次時間戳 1338088810,是第二次時間戳1338088790加上二十秒后的總和。

 

頁面中出現(xiàn)兩次sleep,第一次是十秒,第二次二十秒。由此得出以上實例總共執(zhí)行三十秒。頁面中多次出現(xiàn)sleep()函數(shù)時為累加而不是覆蓋前面的代碼。

那如何結(jié)合sleep定時執(zhí)行動態(tài)生成時間的代碼呢?請看以下代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
/**
 * sleep函數(shù)定時執(zhí)行動態(tài)生成時間段的代碼
 * 瓊臺博客
 */
// 目前時間
echo date('Y-m-d H:i:s'); // out:2012-05-27 14:58:00
echo '<br />';
 
// 動態(tài)生成時間 范圍在今天下午六點到晚上零點前的任意時間
$datetime = date('Y-m-d').' '.rand('18,23').':'.rand('0,59').':'.rand('0,59'); // 2012-05-27 19:20:00
 
// 算得時間戳
$a = strtotime($datetime);
 
// 算得時間差
$reduce = $a-time();
 
// sleep等待
sleep($reduce);
 
// 執(zhí)行到時間后執(zhí)行的代碼塊
echo date('Y-m-d H:i:s'); // out:2012-05-27 19:20:00


以上代碼輸出:

復(fù)制代碼 代碼如下:
2012-05-27 14:58:00
2012-05-27 19:20:00


解析:開始打印當(dāng)前時間,然后隨機算出程序往后執(zhí)行時間 2012-05-27 19:20:00,由于sleep接受參數(shù)是一個以秒為單位的一個數(shù)值,所以先把生成的時間轉(zhuǎn)換為時間戳然后再用時間戳減去當(dāng)前時間戳得出一個時間差,再sleep即可達(dá)到程序在隨機生成時間執(zhí)行某些語句達(dá)到定時執(zhí)行效果。這里注意必須算的一個以秒為單位的時間差,如果不能算出秒差就沒法使用sleep函數(shù)功能。

 

最后,可能某些童鞋做實例的時候會說怎么我的程序執(zhí)行出錯,提示超時。出現(xiàn)這個問題不要慌,這是PHP默認(rèn)頁面執(zhí)行時間導(dǎo)致的,在PHP中默認(rèn)執(zhí)行頁面時間是三十秒鐘,這對于一般程序夠用了。但如果你要做類似定時執(zhí)行功能就必須再頭部聲明設(shè)置下執(zhí)行時間set_time_limit(0)。0是代表不限時,單位是秒。最后整體貼出代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
/**
 * sleep函數(shù)定時執(zhí)行動態(tài)生成時間段的代碼
 * 瓊臺博客
 */
// 設(shè)置頁面執(zhí)行時間,否則會有超時錯誤提示
set_time_limit(0);
 
// 目前時間
echo date('Y-m-d H:i:s'); // out:2012-05-27 14:58:00
 
// 動態(tài)生成時間 范圍在今天下午六點到晚上零點前的任意時間
$datetime = date('Y-m-d').' '.rand('18,23').':'.rand('0,59').':'.rand('0,59'); // 2012-05-27 19:20:00
 
// 算得時間戳
$a = strtotime($datetime);
 
// 算得時間差
$reduce = $a-time();
 
// sleep等待
sleep($reduce);
 
// 執(zhí)行到時間后執(zhí)行的代碼塊
echo date('Y-m-d H:i:s'); // out:2012-05-27 19:20:00

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 在线观看免费视频麻豆 | 性欧美日本 | 3级毛片| 亚洲射逼 | 国产精品久久久久久久久岛 | 欧美一级黄色录相 | 一级成人欧美一区在线观看 | 中文字幕国产欧美 | 国产亚洲精彩视频 | 九九久久视频 | 国产精品久久久久久久av三级 | 日日天日日夜日日摸 | 国产精品一区视频 | 免费视频a | 色诱亚洲精品久久久久久 | 一区二区三区日本在线观看 | 鲁人人人鲁人人鲁精品 | 成人在线观看免费爱爱 | 亚洲影院久久久av天天蜜桃臀 | 久章草影院 | 日本网站在线播放 | 国产欧美在线观看不卡一 | 一级做a爱片性色毛片 | 免费淫视频 | 日产精品久久久一区二区福利 | 九九热视频在线 | 国产精品久久久久久久久久久久久久久久 | 国产 日韩 亚洲 欧美 | 人成免费a级毛片 | 青青操精品 | 污黄视频在线观看 | 男人天堂新地址 | 一区二区三区欧美日韩 | 欧美一区二区精品夜夜嗨 | 九一国产精品 | 中日韩乱码一二新区 | 日韩黄站 | 欧美日韩亚洲国产精品 | 免费在线观看成人av | av噜噜噜噜| 亚洲精品久久久久www |