php定時計劃任務的實現方法_PHP教程

來源:互聯網
上載者:User
  我在uchome 中 分析到, uchome是這樣做的

  1. 把所有的計劃任務存放到資料庫

  2. 每次使用者進行操作或開啟頁面的時候都按排序執行一條計劃任務. 也就是輪番判斷,時間到了的, 就在使用者進程中執行.

  uchome的計劃任務代碼在 ./source/function_cron.php

  上面只自己分析uchome代碼關於計劃任務大概的結果, 拋磚引玉. 希望誰有好的方法拿出來共用.

  ignore_user_abort()

  我前一段時間徹底研究過計劃任務,認為計劃任務的思路很多,但最適合Web的還是觸發式的,就是類似於DZ和PHPWind的,似乎大多數web應用也都是這麼做的,再說幾種其他的供參考

  1,為了提供穩定的觸發,用crontab+wget或者ab提供定時訪問

  2,nohup + php寫精靈

  3,直接用php寫個死迴圈還提供觸發,這時需要用緩衝或者資料庫來協助推出迴圈,還有必須用sleep或者usleep控制觸發頻率

  4,crontab+php

  5,web觸發方式,這也有區別,一種是定時觸發,一種是定周期觸發,DZ和PHPWind都是定時觸發,我最後採用的是定周期觸發

  具體的實現思路 很容易想,就不多說了

  自己有主機肯定用crontab來執行命令列PHP

  沒有只能寫在代碼中了

  用crontab會比較好, 如果用迴圈的話, 最好也要把迴圈和具體處理常式分開, 不然記憶體會一直增加.

  今天一不小心在php手冊上發現了這個函數-ignore_user_abort,這個函數可以協助我們實現像linux中的cron一樣實現計劃任務,下面一起來看下該如何來實現。

  首先看下php手冊對這個函數的解釋

  Description

  int ignore_user_abort ([ bool $setting ] )

  Sets whether a client disconnect should cause a script to be aborted.

  也就是說無論用戶端是否關閉瀏覽器,下面的程式都會執行.

  再看下其參數

  Parameters

  setting

  If not set, the function will only return the current setting.

  這個函數接受一個參數,來決定是否啟用ignore_user_abort的功能。

  再看其傳回值:

  Return Values

  Returns the previous setting, as a boolean.

  這裡說返回前一次的設定,並且是bool值得,經過我的測試,這個說法是不對的,返回的明明是int型的,不相信的話大家可以寫一個php檔案來測試下。

  說了這麼多了,到底該如何用php的這個函數實現計劃任務呢?還跌藉助另外一個函數,這個函數是set_time_limit,通過set_time_limit0)可以設定程式的已耗用時間為無限制,php預設的已耗用時間是30秒,通過set_time_limit(0)可以讓程式無限制的執行下去。在程式執行之前加上ignore_user_abort(1)和set_time_limit(0)即可以了,最終程式該如何寫呢?給大家一個例子。

代碼如下:

http://www.bkjia.com/PHPjc/372013.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/372013.htmlTechArticle我在uchome 中 分析到, uchome是這樣做的 1. 把所有的計劃任務存放到資料庫 2. 每次使用者進行操作或開啟頁面的時候都按排序執行一條計劃任務...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.