亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

[轉(zhuǎn)]詳解PHP設(shè)置定時任務(wù)的實現(xiàn)方法

lemon / 1712人閱讀

摘要:服務(wù)器定時任務(wù)服務(wù)器定時任務(wù)需要你是獨立的服務(wù)器,或者是,總之就是對系統(tǒng)的配置有足夠的權(quán)限,虛擬空間就不要折騰這個方法了,因為你沒有權(quán)限。

文章轉(zhuǎn)載自:問說網(wǎng) ? 詳解PHP設(shè)置定時任務(wù)的實現(xiàn)方法
地址:http://www.uedsc.com/php-timing-task.html

定時運行任務(wù)對于一個網(wǎng)站來說,是一個比較重要的任務(wù),比如定時發(fā)布文檔,定時清理垃圾信息等,現(xiàn)在的網(wǎng)站大多數(shù)都是采用PHP動態(tài)語言開發(fā)的,而對于PHP的實現(xiàn)決定了它沒有Java和.Net這種AppServer的概念,而http協(xié)議是一個無狀態(tài)的協(xié)議,PHP只能被用戶觸發(fā),被調(diào)用,調(diào)用后會自動退出內(nèi)存,沒有常駐內(nèi)存。

如果非要PHP去設(shè)置定時任務(wù), 可以有以下三個方法:

1、用戶觸發(fā)定時

通過掛載到網(wǎng)頁里面,判斷當(dāng)前的時間,然后運行PHP代碼,缺點是每一次加載網(wǎng)頁,都需要加載這個PHP頁面,而對于人氣不旺的網(wǎng)站,這樣的延時可能會更加的嚴(yán)重,畢竟是用戶的HTTP請求去觸發(fā)這個PHP代碼的運行,Discuz!論壇程序是判斷在00:00之后,第一個用戶訪問請求去執(zhí)行定時的PHP代碼。

2、常駐內(nèi)存運行

PHP是可以常駐內(nèi)存運行程序的,下面的這段代碼,可以在當(dāng)前文件夾下,生成一個test.txt,并每隔20秒,往里面寫入一個時間戳,無論客戶端是否關(guān)閉瀏覽器。


關(guān)鍵的兩個函數(shù)

ignore_user_abort(true),這個函數(shù)的作用是,無論客戶端是否關(guān)閉瀏覽器,下面的代碼都將得到執(zhí)行。

set_time_limit(0),這個函數(shù)的作用是,取消PHP文件的執(zhí)行時間,如果沒有這個函數(shù)的話,默認PHP的執(zhí)行時間是30秒,也就是說30秒后,這個文件就會從內(nèi)存中刪除。

另外usleep函數(shù)是在PHP5.0后的版本中加入的函數(shù),支持Windows操作系統(tǒng),設(shè)置代碼運行的時間,單位是毫秒(MS)。

如何停止定時

但是當(dāng)我執(zhí)行腳本的時候,即使我關(guān)閉了瀏覽器,我根本就沒法去停止這段程序了,所以你需要一個執(zhí)行腳本的開關(guān),你可以用外部文件引入的方法來實現(xiàn),在while循環(huán)的時候,include開關(guān)變量即可。那么就可以這樣實現(xiàn):

建立外部引入變量文件 switch.php 內(nèi)容如下:


這個腳本只是測試可行,具體效率應(yīng)該不高,對于lamp,你完全可以使用crontab 來實現(xiàn)。

3、服務(wù)器定時任務(wù)

服務(wù)器定時任務(wù)需要你是獨立的服務(wù)器,或者是VPS,總之就是對系統(tǒng)的配置有足夠的權(quán)限,虛擬空間就不要折騰這個方法了,因為你沒有權(quán)限。

Windows平臺

在 Windows 平臺下您可以將cliphp.exe 和 .php 文件的雙擊屬性相關(guān)聯(lián),您也可以編寫一個批處理文件來用 PHP 執(zhí)行腳本。我們把寫好的程序放在一個目錄下如 E:webmail.php 。

然后寫一個windows批處理文件內(nèi)容如下:

@D:phpcliphp.exe E:webmail.php >d:phpclisendmail.log

Pause
那個 D:phpcliphp.exe 是我的PHP安裝文件所在目錄。Php.exe 就是windows PHP命令行模式的程序。

好的,我們保存這個文件為 mail.bat 然后的windows中的計劃任務(wù)中添加一個任務(wù),讓操作系統(tǒng)在某個時間來運行這個批處理文件。

Unix平臺

如果您使用 Unix 系統(tǒng),您需要在您的 PHP 腳本的最前面加上一行特殊的代碼,使得它能夠被執(zhí)行,這樣系統(tǒng)就能知道用什么樣的程序要運行該腳本。為 Unix 系統(tǒng)增加的第一行代碼不會影響該腳本在 Windows 下的運行,因此您也可以用該方法編寫跨平臺的腳本程序。

在Crontab中使用PHP執(zhí)行腳本

就像在Crontab中調(diào)用普通的shell腳本一樣(具體Crontab用法),使用PHP程序來調(diào)用PHP腳本,每一小時執(zhí)行 myscript.php 如下:

# crontab -e
00 * * * * /usr/local/bin/php /home/john/myscript.php

/usr/local/bin/php為PHP程序的路徑。

在Crontab中使用URL執(zhí)行腳本

如果你的PHP腳本可以通過URL觸發(fā),你可以使用 lynx 或 curl 或 wget 來配置你的Crontab。

下面的例子是使用Lynx文本瀏覽器訪問URL來每小時執(zhí)行PHP腳本。Lynx文本瀏覽器默認使用對話方式打開URL。但是,像下面的,我們在lynx命令行中使用-dump選項來把URL的輸出轉(zhuǎn)換來標(biāo)準(zhǔn)輸出。

00 * * * * lynx -dump http://www.uedsc.net/myscript.php

下面的例子是使用 CURL 訪問URL來每5分執(zhí)行PHP腳本。Curl默認在標(biāo)準(zhǔn)輸出顯示輸出。使用 "curl -o" 選項,你也可以把腳本的輸出轉(zhuǎn)儲到臨時文件。

*/5 * * * * /usr/bin/curl -o temp.txt http://www.uedsc.net/myscript.php

下面的例子是使用WGET訪問URL來每10分執(zhí)行PHP腳本。-q 選項表示安靜模式。"-O temp.txt" 表示輸出會發(fā)送到臨時文件。

*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.uedsc.net/myscript.php

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/21302.html

相關(guān)文章

  • PHP實現(xiàn)執(zhí)行定時任務(wù)幾種思路詳解

    摘要:本文,我們就來深入的解析幾種常見的定時任務(wù)的思路。借用第三方定時任務(wù)跳板很好玩的是,一些服務(wù)商提供了各種類型的定時任務(wù),例如阿里云的提供了單獨的定時任務(wù),你可以填寫自己應(yīng)用下的某個。比如說,你可以在阿里云上建立一個每天凌晨點的定時 PHP本身是沒有定時功能的,PHP也不能多線程。PHP的定時任務(wù)功能必須通過和其他工具結(jié)合才能實現(xiàn),例如WordPress內(nèi)置了wp-cron的功能,很厲害...

    pumpkin9 評論0 收藏0
  • 高性能千萬級定時任務(wù)管理服務(wù)forsun laravel插件使用詳解

    摘要:高性能高精度定時服務(wù),輕松管理千萬級定時任務(wù)。支持任務(wù)到期觸發(fā)和。支持創(chuàng)建延時任務(wù)和定時到期任務(wù),和原生保持相同接口,輕松使用。不支持任務(wù)輸出任務(wù)鉤子及維護模式。是不指定任務(wù)名時自動生成,每個任務(wù)名必須唯一,相同任務(wù)名重復(fù)定義將會自動覆蓋。 Forsun高性能高精度定時服務(wù),輕松管理千萬級定時任務(wù)。 定時服務(wù)項目地址:https://github.com/snower/forsun l...

    Muninn 評論0 收藏0
  • PHP 實現(xiàn)定時任務(wù)幾種方法

    摘要:為系統(tǒng)增加的第一行代碼不會影響該腳本在下的運行,因此您也可以用該方法編寫跨平臺的腳本程序。指定會話頁面在客戶端中的有限期分鐘缺省下為分鐘。最原始的博主沒有找到,只能在此聲明,特為轉(zhuǎn)載。 這幾天需要用PHP寫一個定時抓取網(wǎng)頁的服務(wù)器應(yīng)用. 在網(wǎng)上搜了一下解決辦法, 發(fā)現(xiàn)OSchina的 一個問題的解答很精彩(值得一看,謝謝大牛們的精彩回答O(∩_∩)O~), 提出幾種解決辦法.現(xiàn)總結(jié)如下...

    huhud 評論0 收藏0
  • (轉(zhuǎn))開源任務(wù)隊列服務(wù)HTQ

    摘要:可變隊列會對長期沒有更新動態(tài)的那部分不活躍用戶進行減緩速度,減緩對他們微博的獲取頻率,同時加大對活躍用戶的獲取頻率。 注:本文為轉(zhuǎn)載,原文請查看star7th的個人博客。 一、什么是 HTQ 先介紹下基本概念。 我們在編寫程序時,偶爾會遇到需要用到異步隊列的情況。比如說,我發(fā)送一萬封郵件,如果單純使用一個for循環(huán)來發(fā)送,則執(zhí)行時間要很長,要等很久才能發(fā)完,同時很容易導(dǎo)致阻塞、超時等問...

    LMou 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<