作者banana2014 (香蕉共和國)
看板PHP
標題[問題] 關於用ip判斷該使用者的國家的問題...
時間Wed May 6 16:56:53 2015
最近我想使用ip來判斷客戶端來自哪個國家,
於是上網找了一下,
雖然有找到
http://api.hostip.info/country.php?ip=xxx.xxx.xxx.xxx這個網頁來查詢
不過萬一這個網站出了問題就沒用了
於是找了另外一個方法
就是用ip-to-country.csv這個對應表來找客戶端ip所對應的值是介於哪個範圍之間
但是這又衍生出另外一個問題出來,那就是:「檔案太大了」
一個ip-to-country.csv檔往往都超過5 MB以上,要php讀取該檔案並找尋其ip所介定的範
圍在哪裡實在是太困難了,因此要找到該ip所在的範圍為何要怎麼做才能快又準確? 如何
在一個檔案中找尋第一次出現該字首處? 以上是我的問題,若能幫我解決敬請多多指教,
謝謝各位!
ip-to-country.csv(dbip-country.csv)位址:
http://download.db-ip.com/free/dbip-country-2015-05.csv.gz
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.80.132.171
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1430902617.A.DBB.html
1F:→ twsphere: php GeoIP 05/06 16:59
2F:→ banana2014: 但是geoip有點不準耶… 05/06 17:16
3F:→ y2468101216: 你可以把CSV塞在資料庫裡 05/06 17:25
4F:→ banana2014: 塞近database裡不會有讀取的檔案太大或速度太慢等問題 05/06 18:02
5F:→ banana2014: 嗎? 05/06 18:02
6F:→ wannawanna: 你讀檔案才會有這種問題 DB就是為了解決這種問題而生 05/06 18:55
7F:推 red0whale: 用資料庫匯入吧... 05/06 19:06
8F:→ garypayton5: 5MB小菜一疊而已 05/06 19:50
9F:→ banana2014: 「小菜一碟」是…? 05/06 20:27
10F:→ tper8042: 5MB對資料庫來說不算什麼 05/06 20:56
11F:→ poiuy999: 目標是什麼 轉語系 用瀏覽器的語系分就好了 05/06 21:58
12F:→ mmis1000: 資料庫就是為了應付大量資料用的阿,5MB根本不痛不癢 05/06 23:50
13F:→ MOONRAKER: 挺幽默的。 05/07 06:36
14F:推 rockmanalpha: 資料庫就是用來存大量資料的 你索引做得好 效能還會 05/07 09:50
15F:→ rockmanalpha: 更好 你搜尋的時候是用KEY下去找 不存在 full table 05/07 09:52
16F:→ rockmanalpha: scan的問題 速度不會慢 05/07 09:52