最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2014年08月21日 09:22:36   投稿:junjie  
這篇文章主要介紹了PHP中使用sleep函數(shù)實現(xiàn)定時任務實例分享,本文給出了多個使用sleep的例子,本文還可以作為學習sleep函數(shù)的教程,需要的朋友可以參考下

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

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

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

<?php
/**
 * sleep函數(shù)的用法
 * 瓊臺博客
 */
// 輸出當前程序時間戳
echo time(); // out:1338088780
echo '<br />';
 
// 暫停十秒
sleep(10);
 
// 輸出時間戳
echo time(); // out:1338088790

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

復制代碼 代碼如下:

1338088780
1338088790

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

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

<?php
/**
 * sleep函數(shù)的用法
 * 瓊臺博客
 */
// 輸出第一次時間戳
echo time();   // out: 1338088780
echo '<br />';
 
// 暫停十秒
sleep(10);
 
// 輸出第二次時間戳
echo time();   // out: 1338088790
echo '<br />';
 
// 暫停二十秒鐘
sleep(20);
 
// 輸出第三次時間戳
echo time();   // out: 1338088810

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

復制代碼 代碼如下:
1338088780
1338088790
1338088810

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

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

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

<?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


以上代碼輸出:

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

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

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

<?php
/**
 * sleep函數(shù)定時執(zhí)行動態(tài)生成時間段的代碼
 * 瓊臺博客
 */
// 設置頁面執(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

相關文章

  • php+laravel依賴注入知識點總結

    php+laravel依賴注入知識點總結

    在本篇文章里小編給大家整理的是關于php+laravel依賴注入知識點內(nèi)容,需要的朋友們學習下。
    2019-11-11
  • php并發(fā)加鎖示例

    php并發(fā)加鎖示例

    本文介紹了php并發(fā)加鎖示例,對數(shù)據(jù)進行加鎖,只容許一個用戶在一個時間內(nèi)進行操作,這個時候就需要用到鎖了,需要的朋友可以了解一下。
    2016-10-10
  • Laravel6.18.19如何優(yōu)雅的切換發(fā)件賬戶

    Laravel6.18.19如何優(yōu)雅的切換發(fā)件賬戶

    這篇文章主要給大家介紹了關于Laravel6.18.19如何優(yōu)雅的切換發(fā)件賬戶的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Laravel6.18.19具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-06-06
  • 淺談php函數(shù)serialize()與unserialize()的使用方法

    淺談php函數(shù)serialize()與unserialize()的使用方法

    在php中serialize()與unserialize()函數(shù)是一對函數(shù),下面本文章就來為各位同學介紹serialize()與unserialize()函數(shù)的使用例子,希望能幫助到各位。
    2014-08-08
  • PHP利用百度ai實現(xiàn)文本和圖片審核

    PHP利用百度ai實現(xiàn)文本和圖片審核

    這篇文章主要介紹了PHP利用百度ai實現(xiàn)文本和圖片審核,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • php利用array_search與array_column實現(xiàn)二維數(shù)組查找

    php利用array_search與array_column實現(xiàn)二維數(shù)組查找

    這篇文章主要介紹了php利用array_search與array_column實現(xiàn)二維數(shù)組查找,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 詳談PHP中public,private,protected,abstract等關鍵字的用法

    詳談PHP中public,private,protected,abstract等關鍵字的用法

    下面小編就為大家分享一篇詳談PHP中public,private,protected,abstract等關鍵字的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • YII框架常用技巧總結

    YII框架常用技巧總結

    這篇文章主要介紹了YII框架常用技巧,結合實例形式總結分析了Yii框架控制器、查詢、表單驗證、SQL查詢等常用操作技巧與相關注意事項,需要的朋友可以參考下
    2019-04-04
  • CI框架中zip類應用示例

    CI框架中zip類應用示例

    CI框架自帶的zip類簡單實用,本文就來簡單說一下ci框架的zip類的使用,需要的朋友可以參考下
    2014-06-06
  • php上傳文件常見問題總結

    php上傳文件常見問題總結

    這篇文章主要介紹了php上傳文件常見問題總結,基本上經(jīng)常碰到的問題的處理都列了出來,有需要的小伙伴參考下。
    2015-02-02

最新評論

抚松县| 阳东县| 苏尼特左旗| 综艺| 定南县| 两当县| 沽源县| 平顺县| 康保县| 夏河县| 伽师县| 剑河县| 佛冈县| 抚远县| 离岛区| 防城港市| 色达县| 古丈县| 福安市| 张家界市| 嘉兴市| 卢湾区| 旬阳县| 萨迦县| 嘉鱼县| 酉阳| 临湘市| 台北市| 南澳县| 张家口市| 青神县| 穆棱市| 扶绥县| 姜堰市| 舞阳县| 金塔县| 曲水县| 安庆市| 秭归县| 晋城| 瑞昌市|