php如何?定時任務,php定時任務方法,最佳解決方案,php自動任務處理

來源:互聯網
上載者:User

標籤:blog   http   io   ar   os   sp   java   for   strong   

php如何?定時任務,php定時任務方法,最佳解決方案,php自動任務處理Joe PHP 2012-01-18

定時任務對於php來說一直都是很多朋友的一個難題,但卻很多地方都遇到了。
比如說:
遊戲開發程式中,每隔10分鐘給玩家發兵一次
sns社區中每隔20秒檢測一下是否有人給我發訊息
自動採集程式,每隔5分鐘採集一次最新內容
微博資料同步,每隔10個小時通過微博api介面同步一次使用者資料
……

大概有那麼幾種方法:
1.Linux系統
定時直接可以用cron來執行一個php指令碼 或者其他語言的指令碼[你要有足夠的系統許可權]
執行編輯cron命令

1 crontab -e

比如每隔5分鐘執行下 /root/bin目錄下的test.php指令碼

*/5 * * * * php /root/bin/test.php

2.windows系統
可用計劃任務執行指令碼,不舉例

3.如果沒有系統許可權,那就往下看吧。
由於php屬於解釋型弱語言,所以做定時任務的時候不會像java那樣容易,在java中直接給個進程就可以讓系統執行定時任務,但是在php中沒那麼簡單 設定都沒有多線程的概念。

我第一次接觸定時任務的時候是一個做php的朋友問我怎麼實現定時發兵,我當時給出的答案是寫一個包含檔案,每次都執行的時候都調用這個檔案檢查是否有任務,但試想 如果沒人觸發怎麼辦,顯然答案並不完美。

後來我又通過其他渠道獲得瞭解決的最佳辦法,而且我還親自做了測試。
大致理念就是設定關閉瀏覽器程式也會停留在伺服器記憶體中執行,並且相應時間永不到期
看程式:

1234567891011121314151617181920212223242526272829303132 ignore_user_abort(TRUE);// 設定關閉瀏覽器也執行程式set_time_limit(0);      // 設定回應時間不限制,預設為30秒 $count = 0;while (TRUE){    sleep(5);           // 每5秒鐘執行一次     // 寫檔案操作開始    $fp = fopen("test".$count.".txt", "w");    if($fp)    {        for($i=0; $i<5; $i++)        {            $flag=fwrite($fp,$i."這裡是檔案內容www.uacool.com\r\n");            if(!$flag)            {                echo "寫入檔案失敗";                break;            }        }    }    fclose($fp);    // 寫檔案操作結束     $count++;    // 設定定時任務終止條件    if (file_exists(‘lock.txt‘))    {        break;    }}

把這個檔案命名為 tast.php 放在網站根目錄
如: www.uacool.com/tast.php
訪問此網頁。此程式會再網站根目錄不斷產生名為test0.txt,test1.txt,test2.txt…的文字檔
訪問後可關閉瀏覽器,不影響程式繼續執行,如想阻止程式,請在網站根目錄下放一個名為lock.txt的檔案。
如:www.uacool.com/lock.txt
當然重新啟動伺服器或者重啟電腦也可以阻止程式繼續運行

相關內容:
windows的schtasks定時任務:http://www.cnblogs.com/lostyue/archive/2011/10/24/2223166.html

Cron服務是SAE為開發人員提供的分布式定時服務:http://sae.sina.com.cn/?m=devcenter&catId=195

php如何?定時任務,php定時任務方法,最佳解決方案,php自動任務處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.