2014-03-04 73 views
0

爲了監控垃圾郵件和不必要的爬蟲/機器人/垃圾郵件,我使用rel=nofollow鏈接和隱藏鏈接設置了蜜罐。現在我有近200個IP在一週內封鎖。我不打算使用.htaccess,因爲.htaccess文件稍後會變得非常大。PHP .dat處理與MySQL查詢速度

我將這些IP存儲在MySQL中,並且在任何頁面加載之前查詢它是否被阻止的IP。現在這是可以的,但隨着行數的增加會變慢。我發現人們在.dat文件中存儲這樣的數據,以避免擊中數據庫並且可能更快的搜索。我從來沒有在.dat文件上工作過,但它似乎只有.txt文件!

我的問題是:

  • 被存儲在.dat文件封IP,並用PHP處理它比mysql將其存儲和查詢速度更快?
  • 這兩種方法中的哪一種更強大?
  • 正在檢查被阻止的IP比這更好地阻止IP在.htaccess文件(用於成千上萬的IP)或Apache可以輕鬆處理大的htaccess文件嗎?
+0

如果你存儲在一個文本文件中,你將不得不打開它,閱讀它,並分析它的內容。一個sql數據庫針對這些操作進行了優化。 –

回答

1

我通過'.dat'文件假設你是指使用fopen()/ file_get_copntents()/ file()等直接訪問的文件。

這是一個非常危險的方法。每個PHP實例都不知道其他PHP實例正在做什麼,這意味着爲了避免破壞文件的內容,需要加載鎖定 - 這會導致腳本放慢速度並使用更多內存。還有潛在的死鎖和超時風險。

鑑於該列表可能會繼續增長,爲了能夠在沒有太多開銷的情況下阻止訪問,它將需要被主動修剪。使用DBMS提供了一種更有效管理數據的方法。

如果是我,我會使用fail2ban - 但這取決於具有對服務器的根訪問權限。