2009-06-10 19 views
1

服務器在Perl中處理消息的最佳方式是什麼?如何在Perl中設置消息進行處理?

我想

while (1) { 
    # Get Queue Messages 
    # Do Work 
    sleep(10); 
} 

我的MySQL架構是那種

create table message (
    id int auto_increment primary key, 
    processed int, 
    message varchar(100) 
) 

,並在我的 「#獲取隊列中的消息」,我喜歡

select * from message where processed = 0 
請求

,然後在完成後翻轉標誌。

有沒有更好的方法來做到這一點?

回答

1

嗯,這取決於這些'消息'是什麼,你想走多遠。對於很多情況,你在做什麼可能就好了。

但是,如果您在服務器與其客戶端之間使用大量進程間通信流量使用此機制,則可能是提交了'database-as-IPC anti-pattern'的實例。基本上,這意味着使用數據庫進行進程之間的例行,高容量消息傳遞並不是一件好事。

如果以這種方式使用此消息表,則可能需要考慮執行「正確的」IPC實施。 Perl IPC man page有很多有用的信息。

+0

它們大部分是來自apache/web的請求,我試圖卸載到一個守護進程。 我也打算保留所有這些消息,但這會擴大嗎? – Timmy 2009-06-10 16:37:50

相關問題