1

我使用長輪詢創建了實時聊天。它的工作原理如下:max_user_connection在實時聊天時發生錯誤

首先,用戶向服務器發送請求。服務器獲取請求並等待新消息。

如果發出新消息,它會將消息推送到用戶的瀏覽器(如果請求關閉,瀏覽器將重新發送)。如果服務器等待超過3分鐘,則請求將被取消,並且新的請求將被髮送。

在服務器上,我使用了PHP。在PHP中,我每隔600毫秒檢查一次消息數。如果它大於以前的計數,服務器將收到新消息並將其作爲響應發送給瀏覽器。

問題是我得到了max_user_connection錯誤,即使我在數據庫中的每次SQL檢查之後關閉mysqli連接。

如果我不關閉mysqli,錯誤會更頻繁地發生。

我該如何解決這個問題? (現在我的主機是HostGator和計劃共享)

回答

0

登錄到MySQL服務器並運行此命令,並找出有多少最大連接設置?

mysql>show variables like "max_connections"; 
+-----------------+-------+ 
| Variable_name | Value | 
+-----------------+-------+ 
| max_connections | 100 | 
+-----------------+-------+ 

如果它小於此時請求的連接數,則更新連接數。

mysql>set global max_connections = 200; 

這應該可以解決您的問題。記住max_connections是動態的,你不必停止,或者重新啓動mysql服務器。您可以直接更新連接數量。

+1

爲什麼存在max_connection限制?它有什麼好處?爲什麼主機這樣做?是不是危險增加max_connection llimit? – Alex

+0

不,它不危險,mysql有默認的限制,你可以隨時增加動態如果你想。此操作不會鎖定任何內容。但不要增加太多。此線程可能會有所幫助,http://dba.stackexchange.com/questions/23498/what-should-i-set-max-connections-to-for-mysql – Jordon

+1

謝謝你的信息,這很有用,不幸的是,我不能增加它太多了,我想知道ajax長輪詢的問題是什麼?當我做簡單的ajax輪詢時,它的工作完美,但當我長時間輪詢時,帶寬增加非常多,但是這個問題發生了。我該怎麼辦? – Alex