2010-09-11 37 views
2

我正在LAMP框架+ Codeigniter上開發一個相當簡單的站點,並希望實現用戶訪問速率限制功能,以防止站點被單個用戶的請求淹沒。該網站的基本功能是獲取代碼輸入並返回一些信息。在PHP中實現站點訪問速率限制

我只是在計劃階段,我的第一個想法是有一個簡單的數據庫表,其中包含IP地址,上次訪問時間戳和訪問次數,但由於我的編碼技巧植根於非基於Web的應用程序對於處理這個任務的最佳方式有任何想法 - 例如,我應該考慮會話ID而不是IP地址嗎?

我沒有找到太多的一些一般的網頁搜索,所以任何指針或指導將是偉大的。

謝謝。

+0

請注意,這是不是你必須擔心,直到你絕對huuuuge。但是,嘿,也許你是。 – Matchu 2010-09-11 21:48:22

+0

Huuge是一種可能性!真! – Linker3000 2010-09-11 21:53:02

回答

4

如果你確實需要這樣做,那麼在PHP甚至涉足之前,你可能會做得更好。您可能會考慮考慮配置路由器或負載平衡器來完成此操作,或者至少需要某種網絡服務器模塊。

在PHP中這樣做很可能會造成很大的開銷,以至於自毀。

+1

讚賞 - 所有這些將取決於網站的託管方式,但根據我對另一個響應的評論,限制主要是爲了防止濫用查詢過程來刮取數據庫 – Linker3000 2010-09-11 22:04:27

+0

啊哈,這是一件很難做到的事情,除非你有非常大量的非常易變的數據。爬蟲只會放慢速度,使用多個IP地址,並放棄會話cookie,這樣他們就會在每個請求中獲得一個新的session_id。 – timdev 2010-09-11 22:49:09