[發(fā)明專利]進(jìn)程運(yùn)行裝置及方法有效
| 申請(qǐng)?zhí)枺?/td> | 201210447701.0 | 申請(qǐng)日: | 2012-11-09 |
| 公開(kāi)(公告)號(hào): | CN102999387A | 公開(kāi)(公告)日: | 2013-03-27 |
| 發(fā)明(設(shè)計(jì))人: | 王博;吳凱 | 申請(qǐng)(專利權(quán))人: | 北京奇虎科技有限公司;奇智軟件(北京)有限公司 |
| 主分類號(hào): | G06F9/48 | 分類號(hào): | G06F9/48 |
| 代理公司: | 北京智匯東方知識(shí)產(chǎn)權(quán)代理事務(wù)所(普通合伙) 11391 | 代理人: | 范曉斌;康正德 |
| 地址: | 100088 北京市西城區(qū)新*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 進(jìn)程 運(yùn)行 裝置 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)應(yīng)用領(lǐng)域,具體涉及一種進(jìn)程運(yùn)行裝置及方法。
背景技術(shù)
目前的網(wǎng)絡(luò)應(yīng)用(例如360桌面或?yàn)g覽器)通常會(huì)面對(duì)數(shù)千萬(wàn)的在線用戶,大量的用戶應(yīng)用的情況下,消息能否及時(shí)發(fā)送,就顯得非常重要,直接影響用戶體驗(yàn)。在線用戶是放在一個(gè)隊(duì)列中,需要一個(gè)守護(hù)進(jìn)程(Daemon)不斷去處理該用戶隊(duì)列,現(xiàn)有技術(shù)中采用了使用PHP(Hypertext?Preprocessor,一種腳本語(yǔ)言,可以在命令行模式下執(zhí)行)腳本的定時(shí)任務(wù),這么一種模擬守護(hù)進(jìn)程的方式來(lái)實(shí)現(xiàn)守護(hù)進(jìn)程,取得不錯(cuò)的效果。
守護(hù)進(jìn)程是運(yùn)行在后臺(tái)的一種特殊進(jìn)程。它獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。守護(hù)進(jìn)程最重要的特性是后臺(tái)運(yùn)行。其次,守護(hù)進(jìn)程必須與其運(yùn)行前的環(huán)境隔離開(kāi)來(lái)。這些環(huán)境包括未關(guān)閉的文件描述符,控制終端,會(huì)話和進(jìn)程組,工作目錄以及文件創(chuàng)建掩模等。這些環(huán)境通常是守護(hù)進(jìn)程從執(zhí)行它的父進(jìn)程(特別是提供用戶使用界面的軟件(shell))中繼承下來(lái)的。最后,守護(hù)進(jìn)程的啟動(dòng)方式有其特殊之處。它可以在Linux系統(tǒng)啟動(dòng)時(shí)從啟動(dòng)腳本/etc/rc.d中啟動(dòng),可以由作業(yè)規(guī)劃進(jìn)程(crond)啟動(dòng),還可以由用戶終端(通常是shell)執(zhí)行。
總之,除這些特殊性以外,守護(hù)進(jìn)程與普通進(jìn)程基本上沒(méi)有什么區(qū)別。因此,編寫守護(hù)進(jìn)程實(shí)際上是把一個(gè)普通進(jìn)程按照上述的守護(hù)進(jìn)程的特性改造成為守護(hù)進(jìn)程。
在設(shè)置周期性被執(zhí)行的指令(crontab)計(jì)劃任務(wù)中,寫入PHP腳本,定為每分鐘都會(huì)利用fork函數(shù)調(diào)度一個(gè)進(jìn)程來(lái)執(zhí)行PHP腳本。假設(shè)每個(gè)PHP腳本的最大執(zhí)行時(shí)間是10分鐘,超過(guò)10分鐘就停止執(zhí)行。在10分鐘內(nèi),保證能有10個(gè)進(jìn)程在執(zhí)行,并且,一個(gè)PHP腳本執(zhí)行時(shí)間到期后,其余PHP腳本還在繼續(xù)執(zhí)行,相當(dāng)于該P(yáng)HP腳本不間斷的執(zhí)行,也就模擬了守護(hù)進(jìn)程的功能。
Linux中的nohup命令的功能就是不掛斷的執(zhí)行命令,同時(shí)nohup把程序的所有輸出放到當(dāng)前目錄的nohup.out文件中,如果文件不可寫,則放到<用戶主目錄>/nohup.out文件中。那么有了這個(gè)命令以后,PHP程序就可以被改寫成shell腳本,使用循環(huán)來(lái)讓腳本一直運(yùn)行,那么不管終端窗口是否關(guān)閉,都能夠讓PHP腳本一直運(yùn)行。當(dāng)然,當(dāng)PHP進(jìn)程被殺或者操作系統(tǒng)重啟的情況下,PHP腳本自然就會(huì)中止了。
但是,操作系統(tǒng)重啟或守護(hù)進(jìn)程可能導(dǎo)致腳本進(jìn)程意外中斷,此時(shí)如果不能即時(shí)重啟,那么無(wú)法為用戶提供腳本進(jìn)程的處理,則網(wǎng)絡(luò)應(yīng)用提供的服務(wù)就會(huì)中斷。另外,若守護(hù)進(jìn)程長(zhǎng)時(shí)間運(yùn)轉(zhuǎn),導(dǎo)致腳本進(jìn)程也長(zhǎng)時(shí)間工作,若腳本進(jìn)程的代碼存在內(nèi)存泄漏的情況,長(zhǎng)時(shí)間運(yùn)轉(zhuǎn)會(huì)導(dǎo)致問(wèn)題會(huì)逐漸放大,直到系統(tǒng)崩潰。
發(fā)明內(nèi)容
鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的進(jìn)程運(yùn)行裝置和相應(yīng)的進(jìn)程運(yùn)行方法。
依據(jù)本發(fā)明的一個(gè)方面,提供了一種進(jìn)程運(yùn)行裝置,包括:定時(shí)器,配置為定制多個(gè)腳本進(jìn)程的運(yùn)行時(shí)長(zhǎng),其中,多個(gè)腳本進(jìn)程并行處理;計(jì)時(shí)器,配置為對(duì)每個(gè)腳本進(jìn)程的運(yùn)行時(shí)間進(jìn)行計(jì)時(shí);觸發(fā)器,配置為對(duì)于任意一個(gè)腳本進(jìn)程,當(dāng)計(jì)時(shí)器的計(jì)時(shí)時(shí)長(zhǎng)達(dá)到該腳本進(jìn)程的運(yùn)行時(shí)長(zhǎng)時(shí),退出該計(jì)時(shí)器對(duì)應(yīng)的腳本進(jìn)程,觸發(fā)新的腳本進(jìn)程運(yùn)行。
可選地,上述進(jìn)程運(yùn)行裝置還包括:銷毀器,配置為銷毀退出的腳本進(jìn)程。
可選地,計(jì)時(shí)器還配置為在操作系統(tǒng)重啟或者守護(hù)進(jìn)程意外中斷導(dǎo)致腳本進(jìn)程中斷時(shí),針對(duì)中斷的腳本進(jìn)程繼續(xù)進(jìn)行計(jì)時(shí),直至到達(dá)運(yùn)行時(shí)長(zhǎng)。
可選地,上述進(jìn)程運(yùn)行裝置還包括:處理器,配置為計(jì)時(shí)器的計(jì)時(shí)時(shí)長(zhǎng)未達(dá)到運(yùn)行時(shí)長(zhǎng)時(shí),判斷當(dāng)前用戶隊(duì)列中是否存在用戶數(shù)據(jù),若是,則對(duì)用戶數(shù)據(jù)進(jìn)行處理,若否,則待指定時(shí)長(zhǎng)后對(duì)用戶數(shù)據(jù)再次進(jìn)行判斷。
可選地,上述進(jìn)程運(yùn)行裝置設(shè)置在Cron定時(shí)腳本任務(wù)中。
根據(jù)本發(fā)明的另一方面,提供了一種進(jìn)程運(yùn)行方法,包括:對(duì)每個(gè)腳本進(jìn)程的運(yùn)行時(shí)間進(jìn)行計(jì)時(shí),其中,多個(gè)腳本進(jìn)程并行處理,且預(yù)設(shè)每個(gè)腳本進(jìn)程的運(yùn)行時(shí)長(zhǎng);當(dāng)其中任意一個(gè)腳本進(jìn)程的計(jì)時(shí)時(shí)長(zhǎng)達(dá)到為該腳本進(jìn)程設(shè)置的運(yùn)行時(shí)長(zhǎng)時(shí),退出該腳本進(jìn)程,并觸發(fā)新的腳本進(jìn)程運(yùn)行。
可選的,退出當(dāng)前腳本進(jìn)程之后,上述進(jìn)程運(yùn)行方法還包括:銷毀當(dāng)前腳本進(jìn)程。
可選的,上述進(jìn)程運(yùn)行方法還包括:在操作系統(tǒng)重啟或者守護(hù)進(jìn)程意外中斷導(dǎo)致腳本進(jìn)程中斷時(shí),繼續(xù)對(duì)中斷的每個(gè)腳本進(jìn)程繼續(xù)的計(jì)時(shí)操作;以及當(dāng)任意一個(gè)腳本進(jìn)程的計(jì)時(shí)時(shí)長(zhǎng)達(dá)到運(yùn)行時(shí)長(zhǎng)時(shí),該腳本進(jìn)程退出該腳本進(jìn)程,并觸發(fā)新的腳本進(jìn)程運(yùn)行。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京奇虎科技有限公司;奇智軟件(北京)有限公司,未經(jīng)北京奇虎科技有限公司;奇智軟件(北京)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210447701.0/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 一種進(jìn)程自動(dòng)恢復(fù)方法
- 進(jìn)程啟動(dòng)方法及內(nèi)核、進(jìn)程
- 一種進(jìn)程間的通信方法和裝置
- 進(jìn)程解析裝置、進(jìn)程解析方法和進(jìn)程解析程序
- 32位進(jìn)程和64位進(jìn)程交叉注入方法及裝置
- 一種應(yīng)用進(jìn)程控制方法及裝置
- 插件下載方法及裝置
- 進(jìn)程間的數(shù)據(jù)傳輸方法和裝置
- 進(jìn)程監(jiān)視裝置、進(jìn)程監(jiān)視方法和進(jìn)程監(jiān)視程序
- 一種基于動(dòng)態(tài)監(jiān)測(cè)的進(jìn)程優(yōu)化調(diào)度方法
- 運(yùn)行控制裝置及運(yùn)行控制方法
- 運(yùn)行支援裝置、運(yùn)行支援系統(tǒng)以及運(yùn)行支援程序
- 列車運(yùn)行處理方法、運(yùn)行處理裝置和運(yùn)行調(diào)度系統(tǒng)
- 運(yùn)行監(jiān)測(cè)系統(tǒng)及運(yùn)行監(jiān)測(cè)方法
- 運(yùn)行控制裝置及運(yùn)行控制方法
- 運(yùn)行曲線制作裝置、運(yùn)行輔助裝置以及運(yùn)行控制裝置
- 運(yùn)行支持裝置、車輛、運(yùn)行管理裝置和運(yùn)行支持方法
- 運(yùn)行計(jì)劃方法、運(yùn)行控制裝置和運(yùn)行計(jì)劃系統(tǒng)
- 運(yùn)行控制裝置、運(yùn)行管理系統(tǒng)、運(yùn)行控制方法以及車輛
- 自動(dòng)建模運(yùn)行系統(tǒng)及運(yùn)行方法
- 一種數(shù)據(jù)庫(kù)讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





