mysql - php關於隊列的一點疑問?

來源:互聯網
上載者:User
關鍵字 php mysql 隊列
php是單進程的是吧,每一個指令碼的執行都是相互獨立的,

多進程是個什麼概念呢?

我看了這篇文章http://www.thinkphp.cn/topic/14728.html有個疑惑:
他說是多進程執行隊列可以加快任務處理速度,但是需要解決的問題是,多進程處理任務要防止重複處理,但是:

if ($minute % 5 == 0){    for ($i=0; $i < 10; $i++) {         $cmd = "$phpcmd doQueue.php 10 $i>> doQueueMission".date('Y-m-d').".log  ";        echo  date("Y-m-d H:i:s") . "t : " .$cmd."n";        system($cmd);    }}

這個一個定時任務 crontab 執行十次system(),這不算多進程吧,還是並行啊,這沒什麼意義啊。
多進程應該是配置crontab 吧?但是真正的痛點在於“標記隊列”不讓重複執行

最近像最隊列,解決原有的下單,註冊,發訊息慢的問題,感覺隊列好難啊,總結幾點在這裡:
1:任務存放在哪裡?
2:後台精靈的配置
3:精靈的多進程與定時
4:防止多進程重複拉取隊列任務執行(3,4這才是最難的點)

求大神指點啊,有無成熟的隊列案列啊?

回複內容:

php是單進程的是吧,每一個指令碼的執行都是相互獨立的,

多進程是個什麼概念呢?

我看了這篇文章http://www.thinkphp.cn/topic/14728.html有個疑惑:
他說是多進程執行隊列可以加快任務處理速度,但是需要解決的問題是,多進程處理任務要防止重複處理,但是:

if ($minute % 5 == 0){    for ($i=0; $i < 10; $i++) {         $cmd = "$phpcmd doQueue.php 10 $i>> doQueueMission".date('Y-m-d').".log  ";        echo  date("Y-m-d H:i:s") . "t : " .$cmd."n";        system($cmd);    }}

這個一個定時任務 crontab 執行十次system(),這不算多進程吧,還是並行啊,這沒什麼意義啊。
多進程應該是配置crontab 吧?但是真正的痛點在於“標記隊列”不讓重複執行

最近像最隊列,解決原有的下單,註冊,發訊息慢的問題,感覺隊列好難啊,總結幾點在這裡:
1:任務存放在哪裡?
2:後台精靈的配置
3:精靈的多進程與定時
4:防止多進程重複拉取隊列任務執行(3,4這才是最難的點)

求大神指點啊,有無成熟的隊列案列啊?

https://github.com/chrisboulton/php-resque

據說system()會開啟新的進程, 所以迴圈執行多次system()是有意義的.

他說是多進程執行隊列可以加快任務處理速度,但是需要解決的問題是,多進程處理任務要防止重複處理
痛點在於“標記隊列”不讓重複執行

這些都是對的.

理論上講, 任何可以儲存資料的方式都可以用作MessageQueue. 比如磁碟檔案, 比如Mysql.
但是更好的選擇是: 使用專門的MQ軟體, 比如: ActiveMQ, RabbitMQ..., 類似的軟體很多很多. 題主可以瞭解一下.

php的多進程和crontab 沒啥關係,因為如果你沒用php的子進程它都是串列的,pcntl_fork()這個函數是使用子進程的

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.