2017-09-11 45 views
0

比方說,我有一個時間戳(如:1505148597),表示在tchat中發佈的最後一條消息。同時存儲很多用戶請求的時間戳的最佳方式

然後我有大約10000個用戶每秒申請/lastTimestamp.php。此頁面返回時間戳,以便用戶知道他們是否必須獲取新消息。

我應該:

一)商店數據庫中的時間戳和進行SQL請求,每次用戶調用/lastMessageTimestamp.php返回它

B)店的時間戳一個文件在服務器上,並打開它,每次用戶呼叫/lastMessageTimestamp.php返回它

c)將它存儲在記憶中y並以某種方式訪問​​它?

什麼是最優化的方法呢?我最關心的是性能和服務器負載。

注意:我不想尋找另一種方法來做一個tchat,這是我想要做的方式,我只是想知道什麼是最好的解決方案是(這個例子非常簡化) ,這甚至不是一個tchat。其實我使用的服務器發送的活動,所以基本上10K用戶打開與服務器的流,並且服務器正在做

while(1) { 
    //check the timestamp with one of the solutions 
    sleep(1); 
} 
+0

更有趣的問題是,如何你當數百個用戶正在聊天時(即添加消息),將保持當前值。 –

+0

你正在一臺服務器上處理10,000個請求/秒......這真是令人印象深刻,必須是一個盒子的問題 –

+0

好吧,請閱讀整篇文章,你會明白事實並非如此,我只是讓示例更簡單 – Owow

回答

0

你應該把一個緩存層在前面處理負載。我建議Redis:https://redis.io/

+0

這就是我現在的計劃。它仍然會更好n請求數據庫爲10k用戶/秒 – Owow

0

這是存儲器一次檢索多次的最佳示例。你總是存儲最後的時間戳(一次)。

或者: apcu apc_store

memcached Memcached::set

Memcached是稍微複雜設置,但可以幫助非常大批量的情況

+0

謝謝,我想使用memcached或redis,但我不能,因爲我不在專用服務器上 – Owow

+0

然後測試以查看APC是否安裝(通常是)。這真的會加快速度。 –

相關問題