2011-09-12 88 views
5

我正在尋找可以由php調用的node.js中的作業隊列管理器。這是一個Web應用程序,它需要發送電子郵件,創建PDF文件等,我想執行的PHP過程異步。該方法的node.js中的作業隊列

實施例:

  1. 用戶請求一個PHP頁面
  2. 腓調用作業隊列管理器,並增加了
  3. 任務處於異步的Node.js的PHP執行的任務,優選時,它的多一點安靜
  4. 任務是執行PHP腳本

爲什麼這種「複雜」系統?

  1. 我們用PHP編寫所有的Web應用(Zend框架)
  2. 我們想開始學習Node.js的
  3. 我們需要一個異步過程(響應速度快!)
  4. 的「真正的」任務應該是一個PHP腳本爲好,利用已經寫好的PHP類,可以很方便地訪問數據庫的連接,並儘可能多的乾燥,因爲該系統的可能

使用案例:

  1. 用戶自己註冊,系統會發送
  2. 用戶完成電子商務訂單的歡迎電子郵件,系統會發送發票

最後,我們想使用節點的cron爲好,以執行非系統範圍的cron任務(非常特定於應用程序)。 Node-cron將調用作業隊列管理器,後者將運行一個php腳本。

節點中是否有這樣的應用程序?

回答

0

一種可能的選擇是node-jobs,它使用Redis。

+0

Redis是afaik系統範圍的安裝。我們如何能夠使節點作業(我希望可以在每個應用程序基礎上運行)使用每個應用程序的redis?或者我們應該通過在應用程序名稱前添加所有作業(可能是反向頂級域名)來簡化這一過程? –

+1

前綴可能會起作用:反TLD是一個巧妙的技巧。 – Femi

2

在這種情況下,我更喜歡像RabbitMQ這樣的消息隊列和像node-amqpphp-amqp這樣的客戶端庫。然後,只需將您的作業從隊列中的PHP腳本發送出去,並讓nodejs從隊列中選取作業。一個很大的優勢是它具有可擴展性並且在企業市場上得到了廣泛的使用和測試。

+1

爲什麼你會爲這個設置使用這樣的工具?它似乎可以工作,但過度設計這個目標。徹底的測試和準備用於企業市場當然是有利的,但易用性和簡單性同樣適用於imho。 –

+0

RabbitMQ是有據可查的,獨立於語言(今天它是第二天的python,ruby,java?)nodejs,活躍的社區。因爲簡單總是很好,但我也選擇我的技術也是由項目的活動。 – malte