當(dāng)前位置:首頁(yè) >  站長(zhǎng) >  網(wǎng)站運(yùn)營(yíng) >  正文

PHP定時(shí)任務(wù)程序設(shè)計(jì):愛(ài)上文學(xué)網(wǎng)電子雜志郵件任務(wù)

 2010-12-14 16:11  來(lái)源:   我來(lái)投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)

在上周哈維硬件網(wǎng)改用新的新聞發(fā)布平臺(tái)后,由于暫時(shí)的需要,原有的新聞平臺(tái)并沒(méi)有徹底停止使用,所以在新平臺(tái)開始使用后便發(fā)現(xiàn)一個(gè)讓人頭痛的問(wèn)題,網(wǎng)站首頁(yè)總是被更新為原來(lái)的系統(tǒng)內(nèi)容,最終導(dǎo)致某此新聞鏈接不能正常訪問(wèn)。新系統(tǒng)對(duì)URL做了優(yōu)化,新聞頁(yè)面的網(wǎng)址和原系統(tǒng)不同。最初的時(shí)候以為是仍舊有人在使用舊的系統(tǒng)操作,可在第二天這樣的情況仍舊出現(xiàn),便想到應(yīng)當(dāng)是舊系統(tǒng)的問(wèn)題,后來(lái)檢查發(fā)現(xiàn)帝國(guó)CMS系統(tǒng)有一個(gè)默認(rèn)的刷新首頁(yè)的任務(wù),取消后網(wǎng)站首頁(yè)的更新便正常了。

解決這個(gè)問(wèn)題后,我對(duì)PHP任務(wù)有了興趣,以前也有所了解,但卻沒(méi)有真正的去實(shí)踐,也許是考慮到這個(gè)功能對(duì)網(wǎng)站系統(tǒng)開發(fā)的重要性,所以現(xiàn)在決定研究一下,并編寫一套成熟的代碼以便于以后應(yīng)用。

首先是上網(wǎng)查找相關(guān)的資料,通過(guò)閱讀這些資料,知道了PHP任務(wù)大體上可以分為三類。

服務(wù)器計(jì)劃任務(wù)

WIN服務(wù)器可以直接使用定時(shí)任務(wù)執(zhí)行相關(guān)的應(yīng)用程序,LINUX服務(wù)器則可以通過(guò)在/etc/crontab里添加定時(shí)任務(wù)來(lái)實(shí)現(xiàn)。

通過(guò)死循環(huán)實(shí)現(xiàn)任務(wù)自動(dòng)執(zhí)行

建立一個(gè)程序文件頁(yè)面,通過(guò)ignore_user_abort來(lái)設(shè)置關(guān)閉瀏覽器頁(yè)面后仍可執(zhí)行,那么,在運(yùn)行該程序頁(yè)面后,您所需要的任務(wù)計(jì)劃便會(huì)一直自動(dòng)執(zhí)行。對(duì)于一般的PHP程序員來(lái)說(shuō),如果沒(méi)有足夠的把握,這種操作是不被允許的,因?yàn)樗姥h(huán)極容易使用服務(wù)器當(dāng)機(jī)。

觸發(fā)式定時(shí)任務(wù)

在我所了解的幾套程序中,像Discuz、帝國(guó)CMS等等,均使用這種方式來(lái)完成系統(tǒng)的定時(shí)任務(wù),相對(duì)前面的兩種方法,這是最為安全和簡(jiǎn)單的。

有這么多選擇,那么在設(shè)計(jì)程序的時(shí)候應(yīng)當(dāng)根據(jù)實(shí)際的需要選擇最為恰當(dāng)?shù)姆绞饺プ龀绦?。下面就用?shí)例做個(gè)介紹。

愛(ài)上文學(xué)網(wǎng)的電子雜志在網(wǎng)站上線不久便制作出來(lái)了,這是通過(guò)電子郵箱傳遞的電子雜志,將最新一期的電子雜志發(fā)送到訂閱用戶的郵箱里是一個(gè)龐大的工作,單純的頁(yè)面批量發(fā)送顯然是行不通的。主要原因是目前還沒(méi)有自己的郵件服務(wù)器,像新聞、騰訊以及163所提供的郵箱,盡管支持SMTP發(fā)送郵件,但卻不允許大批量的發(fā)送電子郵件,條件有限,那么就只能通過(guò)程序來(lái)解決這個(gè)問(wèn)題。

首先,我選擇觸發(fā)式定時(shí)任務(wù),為了避免發(fā)送郵件的程序不影響用戶訪問(wèn)網(wǎng)站的體驗(yàn),主要是打開網(wǎng)站頁(yè)面的速度,因此選擇使用AJAX來(lái)實(shí)現(xiàn)觸發(fā)。在公共JS文件里增加觸發(fā)函數(shù),用戶在訪問(wèn)任何頁(yè)面的時(shí)候便可以觸發(fā)郵件發(fā)送任務(wù)。

為了限定郵件發(fā)送的頻率,防止因?yàn)檫^(guò)度頻繁發(fā)送郵件被郵件服務(wù)器禁止,在程序上也做了時(shí)間的限制,使用RAND隨機(jī)生成一個(gè)等待時(shí)間,解決發(fā)送郵件不是固定間隔時(shí)間,實(shí)際上觸發(fā)模式中間隔時(shí)間本來(lái)就不確定,但當(dāng)網(wǎng)站訪問(wèn)量大的時(shí)候,還是有可能出現(xiàn)這樣的問(wèn)題,所以加一下這方面的設(shè)置還是比較穩(wěn)妥。

盡管有了上面的一些措施,在實(shí)際應(yīng)用中還是發(fā)現(xiàn)會(huì)被郵件服務(wù)器禁止發(fā)送郵件,但不是永久禁止。解決這個(gè)問(wèn)題的辦法是建立一個(gè)數(shù)組,將不同的郵件服務(wù)SMTP參數(shù)保存起來(lái),當(dāng)一個(gè)郵件服務(wù)器不能正常發(fā)送郵件的時(shí)候,則會(huì)自動(dòng)跳轉(zhuǎn)使用另一個(gè)郵件服務(wù)器。

在所收集的郵箱地址列表中,會(huì)有一些無(wú)效的地址,在發(fā)送郵件的過(guò)程中,如果一次發(fā)送不同功,則切換另一個(gè)郵件服務(wù)器再次發(fā)送,如果均不成功,則將這個(gè)郵件地址設(shè)為無(wú)效,以后便不會(huì)再向這個(gè)地址發(fā)送郵件,從而提高郵箱地址列表的有效率,也為下次發(fā)送郵件節(jié)省了時(shí)間。

有朋友說(shuō)我太小氣,在這類日志里分享的代碼太少,其實(shí)我們上網(wǎng)查資料的時(shí)候便會(huì)發(fā)現(xiàn),許多網(wǎng)站分享的代碼并不一定實(shí)用,有時(shí)候還會(huì)因?yàn)閰⒖歼@些代碼而耽誤了許多時(shí)間,所以我在總結(jié)的時(shí)候往往總結(jié)解決問(wèn)題的方法,并把關(guān)鍵的技術(shù)參數(shù)記下,以便于以后再遇到類似的問(wèn)題自己也有了可以參考的信息。如果你有這方面的問(wèn)題,可以通過(guò)留言、電子郵件和我聯(lián)系。

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)文章

  • Rushmail:電子雜志的郵件群發(fā)方式

    在知識(shí)經(jīng)濟(jì)的時(shí)代中,知識(shí)就是能力,因此給讀者提供知識(shí)的行業(yè)和企業(yè)逐漸增多。隨著移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來(lái),人們?cè)絹?lái)越習(xí)慣用手機(jī)等移動(dòng)端設(shè)備進(jìn)行獲取知識(shí)或接收信息,大部分企業(yè)都會(huì)采用電子郵件群發(fā)的方式,給會(huì)員們推送資訊雜志

  • 郵件群發(fā)電子雜志贏在靈活、個(gè)性和互動(dòng)

    在知識(shí)經(jīng)濟(jì)時(shí)代,知識(shí)就是一種生產(chǎn)力,因此給讀者提供知識(shí)消費(fèi)的行業(yè)組織和專業(yè)機(jī)構(gòu)越來(lái)越多,他們通常采取電子郵件群發(fā)的方式,給會(huì)員們推送資訊。最近一家電子行業(yè)協(xié)會(huì)利用U-Mail郵件營(yíng)銷平臺(tái)豐富的功能,將DM電子雜志辦得內(nèi)容詳實(shí)、風(fēng)格斑斕多姿,點(diǎn)擊率節(jié)節(jié)攀升。電子雜志的興起,與移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來(lái)不無(wú)關(guān)

    標(biāo)簽:
    電子雜志
  • 最方便最簡(jiǎn)單的在線電子雜志制作

    隨著中國(guó)移動(dòng)互聯(lián)網(wǎng)的壯大發(fā)展,人們開始慢慢改變本來(lái)的傳統(tǒng)書本閱讀習(xí)慣,轉(zhuǎn)向用電腦和手機(jī)閱讀接收信息。這就讓電子雜志市場(chǎng)的需求量變得大了,企業(yè)和個(gè)人都可以用很小的成本通過(guò)第三方網(wǎng)站出版托管自己的雜志。目前國(guó)內(nèi)像這類的文檔托管網(wǎng)站很多,比如百度文檔,豆丁,但這些網(wǎng)站的用戶閱讀體驗(yàn)效果很不好。所以有沒(méi)有一

    標(biāo)簽:
    電子雜志
  • Phpwind推電子雜志《站長(zhǎng)天下》 網(wǎng)羅站長(zhǎng)故事

    8月24日消息,阿里巴巴旗下phpwind今日正式發(fā)布《站長(zhǎng)天下》(http://zz.phpwind.com/)創(chuàng)刊號(hào)。這是一份關(guān)注中小站長(zhǎng)、行業(yè)、運(yùn)營(yíng),網(wǎng)羅天下站長(zhǎng)故事的電子雜志。據(jù)了解,借助《站長(zhǎng)天下》,phpwind可以幫助站長(zhǎng)降低準(zhǔn)入的

熱門排行

信息推薦