雖然我有一些想法(IPC,用mysql堆表,內存緩存)無我的想法似乎是工作的「完美」。如何performantely拒絕點大的請求(基於PHP API)
我尋找一種方式來阻止來自同一用戶的PHP腳本的任何點大的訪問。
所有訪問我的腳本的用戶都會在每次通話時提供一個用戶ID,所以我知道打開門之前誰敲門。
但是,可能會發生這樣的情況:用戶會將我的API從地獄中「剔除」,我不希望任何人都可以在之前的「API調用」未完成時訪問腳本。
我需要較低的系統影響,並沒有任何比賽條件(即使請求來在毫秒之內或更快無瑕處理)的東西。
你是如何解決類似的問題,我會很高興的建議或信息。
平臺是Linux。
更新:
我到目前爲止拒絕使用數據庫,因爲我害怕每秒發送數千次更新或類似查詢可能會使服務器停頓,即使單一影響較低。
有時,訪問我的API的用戶工具有問題,只是用大量查詢來轟炸它,我希望如果通過我的數據庫處理它,性能會受到影響。
這是我的想法,我不確定它是否正確。您可以創建一個access_token並設置一個生命週期。如果他們想使用你的API,他們應該應用一個access_token。 – lighter
如果你有一個數據庫 - 你可以使用它提供的悲觀鎖定機制。 – zerkms
考慮到數據庫,但我認爲這是我認爲的最「重」的解決方案之一。 我可以「更新」這是原子,然後檢查它是否工作。 我不喜歡這樣的想法:如果某人的腳本發瘋,那麼每秒鐘可能會有數千次額外的「更新」爆炸我的數據庫連接 – John