2015-08-20 85 views
0

在循環中每隔50ms執行一次MySQL查詢是不是很糟糕?在循環中每隔50ms執行一次SQL查詢

例如:

while(1) { 
    sleep(0.05) 
    $bool = do_check(); 
    if ($bool) { ... } 
} 

function do_check() { 
    $sql1 = "select .... "; 
    $sql2 = "select .... "; 

    some maths formula; 

    return true for false; 
} 

這是一個呼叫中心產品,我發展。它必須檢查有多少座座席是免費的以及撥打了多少電話,然後決定是否通過API撥打更多的電話。

+0

什麼是上下文 - 爲什麼你會認爲你需要每隔50ms查詢一次? – amdixon

+1

當代理狀態更改爲空閒時調用函數不是更好嗎?不斷檢查誰是免費的並不聰明。如果您擁有代理狀態的代理表,則可以簡單地創建一個觸發器,讓您知道代理狀態何時發生變化。 – John

+0

@John你的意思是在代理程序空閒時執行事件檢測,然後執行SQL查詢? –

回答

1

我認爲使用數據庫觸發器會更好,它會在您想要監視變化狀態的特定條件時通知您的應用程序,以實現類似的策略,您需要一個觸發器來調用MySQL中的用戶定義函數這將通過進程間通信系統(例如Socket,JMS消息)調用您的應用程序。

關於MySQL UDF的一些示例,請看this site

+0

如何使用來自PBX服務器的事件檢測,如果接收到事件,則布爾值設置爲true,然後執行SQL例如:http://pastebin.com/yPxzdrHm –

+0

這也可能是一個選項。 – aleroot

+0

同時有很多併發的公司和活動,那麼我需要爲每組代理並行執行代碼。我不確定是否使用全局變量作爲標誌是一個好主意。有其他選擇嗎? –