2011-05-24 61 views
4

我期待運行一個可以傳遞輸入的python解釋器的持久化實例。整個系統設計用PHP編寫。我注意到了Pheanstalk包在beanstalkd工作隊列上的使用。有沒有人使用Pheanstalk來生成(並維護)一個持久化進程?我明白,Pheanstalk的常見用途是運行腳本或其他任務,這些腳本或任務需要花費很長時間才能完成異步處理,以避免用戶在等待。我期望異步地擁有一個Pheanstalk作業/進程,它管理和維護一個我可以將輸入傳遞給的Python解釋器進程。這是否可行/是否已經完成,如果是這樣,如何?Pheanstalk問題

回答

4

我肯定運行使用Pheanstalk的持續隊列工作。它的工作原理如下:

父PHP過程分叉指定數量的工作進程。每個工人都使用Pheanstalk連接beanstalkd並等待工作。當一名工人獲得工作時,它會執行任務,然後退出,釋放自己的記憶。父PHP過程然後產生一個新的工人來替換它。

您的要求聽起來更像是這樣的:

父PHP進程使用proc_open()叉Python解釋器過程中,存儲所創建的標準輸入和標準輸出管道的引用。然後父級PHP進程進入一個循環,使用Pheanstalk連接到beanstalk並保留下一個任務。當作業被保留時,PHP使用fwrite()將作業內容發送到python STDIN管道,然後使用fread()從pythons STDOUT管道讀取響應。

這是假設你想維護一個正在運行的python進程,而不是每次保留一個作業時激活一個新的python進程。

瘋狂的方式,但它可能工作。

的理智的辦法是使用一個Python beanstalkd客戶端,但是,嘿,很高興地看到越來越多的人使用Pheanstalk :)

乾杯, 保羅

+0

嘿paradox870,沒有這個幫助回答你的問題?接受或upvote會很好。乾杯。 – 2011-08-31 00:52:51

+0

嘿保羅很好的答案。我開始使用pheanstalk並且自己也有一些疑問。我提出了一個問題,你能否讓我對此有所瞭解? http://stackoverflow.com/questions/37370688/pheanstalk-and-beanstalk-functions – Webeng 2016-05-22 19:41:46