成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【PHP】一種實(shí)現(xiàn)多進(jìn)程的方式

3fuyu / 1505人閱讀

摘要:多進(jìn)程語言可以很容易的實(shí)現(xiàn)多進(jìn)程,對(duì)于,有沒有比較簡單的方法去實(shí)現(xiàn)這里有一種巧妙的方式,來實(shí)現(xiàn)多進(jìn)程。這樣會(huì)導(dǎo)致進(jìn)程重啟進(jìn)程時(shí),發(fā)現(xiàn)有鎖文件,就不會(huì)繼續(xù)啟動(dòng)進(jìn)程。解決辦法在進(jìn)程中自動(dòng)刪除昨天的鎖文件

多進(jìn)程

GO 語言可以很容易的實(shí)現(xiàn)多進(jìn)程,對(duì)于 PHP,有沒有比較簡單的方法去實(shí)現(xiàn)?

這里有一種巧妙的方式,來實(shí)現(xiàn)多進(jìn)程。

但是需要注意一下 內(nèi)存CPU 的使用情況

場景:消息PUSH

假設(shè) PUSH 有多種類型,比如針對(duì)用戶的,針對(duì)游戲的,針對(duì)全局的。

我們使用 PHP 腳本去執(zhí)行下發(fā)操作,長連接 PUSH 服務(wù)使用第三方系統(tǒng)提供的 API 來支持。

PHP 腳本是順序執(zhí)行的,假設(shè)配置了 NPUSH,后續(xù)的 PUSH 就要等前面的 PUSH 執(zhí)行完畢,才能繼續(xù)。

比如,第一條 PUSH 是處于 While(true) 之類的循環(huán)狀態(tài)中,下發(fā)時(shí)間范圍為一整天;那么其他的 PUSH 就只

能干等著,無法及時(shí)執(zhí)行 PUSH 操作,從而耽誤了業(yè)務(wù)。

方案Deamon 進(jìn)程 和 Act 進(jìn)程

1、Deamon 進(jìn)程:配置 crontab

* * * * *  flock -xn /tmp/push_deamon.lock -c "/usr/local/php/bin/php push_deamon.php >> /tmp/push_error.log 2>&1"

2、Act 進(jìn)程:在 push_deamon.php 中,針對(duì)不同 push_id,啟動(dòng)以下腳本。

$command = flock -xn /tmp/push_act_{$push_id}.lock -c "nohup /usr/local/php/bin/php -f push_act.php $push_id >> /tmp/push_error.log 2>&1 &"
exec($command);

問題Act 進(jìn)程被手動(dòng) Kill

有些 PUSH 是每天執(zhí)行一次的,如果對(duì)應(yīng)的 Act 進(jìn)程被殺死。

那么對(duì)應(yīng)的鎖文件 push_act_{$push_id}.lock,就沒有被清理。

這樣會(huì)導(dǎo)致 Deamon 進(jìn)程重啟 Act 進(jìn)程時(shí),發(fā)現(xiàn)有鎖文件,就不會(huì)繼續(xù)啟動(dòng) Act 進(jìn)程。

解決辦法:在 Deamon 進(jìn)程中自動(dòng)刪除昨天的鎖文件

$command = "find /tmp/ -daystart -mtime 1 -type f -name push_act_{$id}.lock -exec rm -f {} ; >> /tmp/push_error.log 2>&1 &";
exec($command);

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22949.html

相關(guān)文章

  • PHP回顧之進(jìn)程編程

    摘要:多進(jìn)程中與多進(jìn)程相關(guān)的兩個(gè)重要拓展是和。函數(shù)執(zhí)行期間,主進(jìn)程除了等待無法處理其他任務(wù),所以一般不認(rèn)為這是多進(jìn)程編程?;厥兆舆M(jìn)程有兩種方式,一種是主進(jìn)程調(diào)用函數(shù)等待子進(jìn)程結(jié)束另外一種是處理信號(hào)。 轉(zhuǎn)載請(qǐng)注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請(qǐng)求 cookie web響應(yīng) session 數(shù)據(jù)庫操作 加解...

    lifesimple 評(píng)論0 收藏0
  • PHP并發(fā)IO編程之路

    摘要:下文如無特殊聲明將使用進(jìn)程同時(shí)表示進(jìn)程線程。收到數(shù)據(jù)后服務(wù)器程序進(jìn)行處理然后使用向客戶端發(fā)送響應(yīng)?,F(xiàn)在各種高并發(fā)異步的服務(wù)器程序都是基于實(shí)現(xiàn)的,比如。 并發(fā) IO 問題一直是服務(wù)器端編程中的技術(shù)難題,從最早的同步阻塞直接 Fork 進(jìn)程,到 Worker 進(jìn)程池/線程池,到現(xiàn)在的異步IO、協(xié)程。PHP 程序員因?yàn)橛袕?qiáng)大的 LAMP 框架,對(duì)這類底層方面的知識(shí)知之甚少,本文目的就是詳細(xì)介...

    Riddler 評(píng)論0 收藏0
  • PHP進(jìn)程初探 --- 信號(hào)

    摘要:第一次子進(jìn)程正在休眠中,父進(jìn)程依舊在循環(huán)中。第三次此時(shí)父進(jìn)程已經(jīng)執(zhí)行了,將已經(jīng)退出的子進(jìn)程回收,釋放了等資源。梳理一下流程,子進(jìn)程向父進(jìn)程發(fā)送信號(hào)是對(duì)人們來說是透明的,也就是說我們無須關(guān)心。 [原文地址:https://blog.ti-node.com/blog...] 上一篇尬聊了通篇的pcntl_wait()和pcntl_waitpid(),就是為了解決僵尸進(jìn)程的問題,但最后看起來...

    Prasanta 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<