国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

3fuyu / 1507人閱讀

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

多進程

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

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

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

場景:消息PUSH。

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

我們使用 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ā)時間范圍為一整天;那么其他的 PUSH 就只

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

方案Deamon 進程 和 Act 進程

1、Deamon 進程:配置 crontab

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

2、Act 進程:在 push_deamon.php 中,針對不同 push_id,啟動以下腳本。

$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 進程被手動 Kill

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

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

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

解決辦法:在 Deamon 進程中自動刪除昨天的鎖文件

$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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22949.html

相關(guān)文章

  • PHP回顧之進程編程

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

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

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

    Riddler 評論0 收藏0
  • PHP進程初探 --- 信號

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

    Prasanta 評論0 收藏0

發(fā)表評論

0條評論

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