基本介紹
簡介,工作原理,
簡介
可以通過下載純真IP資料庫查詢器來得到這個檔案,純真IP資料庫查詢器擁有線上更新IP庫功能可以擁有最新的QQWry.Dat檔案
工作原理
一個利用 QQWry.Dat 實現 IP 地址高效檢索(PHP),當時是直接從檔案里查詢的,雖然在創建類的一個實例後,可以進行多次查詢,不用每次查詢都打開檔案,已經很快了,但是我想也許還可以更快點兒,於是我想到了用共享記憶體。下面這個程式就是我用共享記憶體來實現的快速查詢類,它在第一個實例被創建時將 QQWry.Dat 檔案讀入共享記憶體,以後每次查詢都直接從共享記憶體中查找數據,而不需要再讀檔案了,現在的查詢效率是原來的 1.5 倍。不過使用這個類要注意一點,這個類是一個 Singleton 類,所以需要用 & IpLocation::getInstance 來返回此類的實例引用,而不要用 new IpLocation 來創建實例,不然就不能保證實例的唯一性了。如果在一個頁面內創建多個 IpLocation 實例的話,你會得到記憶體錯誤,嚴重情況下可能會使你的伺服器崩潰,因此我才把它定義為一個 Singleton 類。另外這個類的實例被創建一次後,檔案內容就被讀入到共享記憶體中了,因此如果伺服器不重新啟動,記憶體中的 QQWry.Dat 的檔案數據就不會更新。
因為用了共享記憶體,因此對系統有一定的要求,如果系統是 Windows,系統需要 Windows2000 以上系統,PHP 作為 IIS 的 ISAPI 運行才支持共享記憶體,或者是 Linux 下 PHP 作為 Apache 模組運行,CGI 和 CLI 方式下不可以。