的web前端推薦的通信模式I有一個perl應用程序,它從本地文件系統處理的文本文件(考慮它作爲一個過於複雜的grep)。 我想設計一個webapp,它允許遠程用戶通過設置所需的參數來調用perl應用程序。 運行後,perl應用程序和web應用程序之間需要進行某種關於進程狀態(運行,%完成,完成)的通信。 這將是兩個過程之間推薦的溝通方式?我在數據庫表中想,但我不確定這是個好主意。命令行應用
任何建議讚賞。
的web前端推薦的通信模式I有一個perl應用程序,它從本地文件系統處理的文本文件(考慮它作爲一個過於複雜的grep)。 我想設計一個webapp,它允許遠程用戶通過設置所需的參數來調用perl應用程序。 運行後,perl應用程序和web應用程序之間需要進行某種關於進程狀態(運行,%完成,完成)的通信。 這將是兩個過程之間推薦的溝通方式?我在數據庫表中想,但我不確定這是個好主意。命令行應用
任何建議讚賞。
堆垛機,繼續編輯這個答案示例代碼或鏈接添加到他們。
DrNoone,有兩種方法浮現在腦海中。
回調
你greppy的應用程序需要提供恢復狀態並定期由Web應用程序調用的回調函數。
事件
如果你已經使用Web服務器/應用程序框架,它暴露了一個事件循環從外部應用程序使用的(在Perl的土地,而不太可能)這是有道理的。 greppy應用程序會觸發狀態更改事件,並且Web應用程序會附加/監聽它們並採取相應措施。
對於IPC如你想象它,一個簡單的數據庫也不是那麼適合。查看消息隊列。對於偉大的互操作性,請選擇符合AMPQ的實施。
如果您運行使用open($handle, "cmd |")
可以實時讀取結果並將其打印直接到標準輸出,而你的反應是打開的進程。這可能是最簡單的方法。
過程輸出是巨大的,應該在打印 – DrNoone 2011-06-07 19:10:14
完成該過程需要多長時間?你會同時允許多個網絡用戶嗎? – 2011-06-07 23:51:31
它取決於參數,但在幾分鐘到幾個小時之間。網絡應用程序應該照顧工作排隊。 – DrNoone 2011-06-08 17:35:25