2014-10-07 66 views
0

我想實現一個AJAX腳本,它將負責檢查我的MySQL服務器上的新數據,並在存在新數據時更新列表。我發現的一個解決方案是有一個計時器來檢查任何給定的時間,這是可行的,但是因爲在我的系統中,我將同時有超過50個在線用戶,他們將執行這個腳本,並且我將這會影響我的MySQL服務器的處理時間。第二種解決方案是使用Comet模型,但爲了更新A形式,我必須以某種方式鏈接B形式,以通知服務器已經插入新數據,以便服務器向A形式發送響應以通知它新數據已添加,我不想將B表單與服務器相關聯。是否有任何不同的場景可用於限制處理時間,超載服務器,最小化性能以及未達到服務器上用於檢查新數據的最大MySQL連接數。我如何限制我的MySQL服務器上腳本的處理時間?

謝謝

+1

[如何限制SQL執行時間](http://stackoverflow.com/questions/11772854/how-to-limit-the-sql-execution-時間)**或** [MySQL - 我可以限制查詢運行的最大時間嗎?](http://stackoverflow.com/questions/4794747/mysql-can-i-limit-the-maximum-time - 允許查詢運行)**或** [無論如何限制MySQL查詢執行時間?](http://stackoverflow.com/questions/8254687/anyway-to-limit-mysql-query - 執行時間)**或** [如何限制sql執行時間](http://stackoverflow.com/questions/11772854/how-to-limit-the-sql-execution-time) – Pred 2014-10-07 07:54:54

+0

我不'爲了儘量減少sql查詢的執行時間,我想限制AJAX將執行的連接。例如,如果我有50個用戶,他們會向服務器發送50個請求以請求新數據,然後在5秒後例如他們會發送另一個50請求以檢查是否有任何新數據 – 2014-10-07 08:16:22

+0

如果查詢速度夠快,連接在查詢成功處理後立即關閉,連接將及時分配,因此50個用戶在特定時間點不應有50個連接。 (建議:儘可能簡單地查詢並手動關閉連接) – Pred 2014-10-07 08:29:10

回答

0

如果你正在使用PHP,使用set_time_limit (int $seconds);限制PHP腳本,你將使用AJAX調用來的最大執行時間。這也會限制mysql運行的最大執行時間。
此外,您可以使用ini_set('max_execution_time', $seconds);限制最大執行時間

+1

'set_time_limit()'函數和配置指令'max_execution_time'隻影響腳本本身的執行時間。 **任何時間花費在腳本執行之外發生的活動中,例如**使用system()系統調用,流操作,**數據庫查詢**等。**在確定最大時間腳本一直在運行**這在Windows **上不是真實的,測量時間是真實的。 (http://php.net/manual/en/function.set-time-limit.php) – Pred 2014-10-07 07:34:57

+0

@Pred,是的文檔說。但考慮一下=>我記得曾經用php查詢過一個數據庫(1GB +),並且它比最大執行時間(15s)多。它顯示了一個致命錯誤並停止了查詢。任何想法爲什麼? – h2O 2014-10-07 07:39:47

+0

它將停止查詢,因爲它在循環中執行並且每個循環中的值都從數據庫傳遞。所以,PHP有停止劇本的力量。雖然插入通常不會佔用太多時間 – h2O 2014-10-07 07:41:55

相關問題