【发布时间】:2011-09-06 08:19:04
【问题描述】:
最近我使用 Maxmind geoip 根据 ip 定位国家和城市。它在 dat 文件中有大量内容。但是检索这些记录会在几秒钟内发生。所以我很想学习和使用 php 中的技术。
首先我看到一些视频文件正在使用这个 .dat 扩展文件,现在是文本信息。那么 .dat 扩展名实际上是什么? php可以读写吗?
谢谢!
【问题讨论】:
最近我使用 Maxmind geoip 根据 ip 定位国家和城市。它在 dat 文件中有大量内容。但是检索这些记录会在几秒钟内发生。所以我很想学习和使用 php 中的技术。
首先我看到一些视频文件正在使用这个 .dat 扩展文件,现在是文本信息。那么 .dat 扩展名实际上是什么? php可以读写吗?
谢谢!
【问题讨论】:
据我所知,dat 扩展名意味着一个通用文件,您可以在其中以您喜欢的格式编写您需要的内容。
我的意思是,在每个文件中你都可以这样做,但通常如果你找到一个 xml 文件,你会假设你在里面找到了 xml 格式的文本;相反 dat 文件不会被识别为可以使用特定软件解码的文件,如果您不知道是谁以及如何编写的。
【讨论】:
文件很可能是他们开发的自定义格式;如果它是开源的,你可以用 PHP 重新实现它(如果它还没有用 PHP 编写),或者可以通过 API 访问数据。
速度来自于它会以某种方式被索引,或者就像“每条记录将 100 字节进一步移动到文件中”。
【讨论】:
这里有很多问题。
首先,文件是database - 它存储数据。有很多数据库模型 - 关系的、分层的、面向对象的、向量、超立方体、密钥库......所有这些都有现成的实现。
有些数据库比其他数据库更适合管理特定的数据结构。地理空间数据是一种常见的专业化 - 以至于许多其他数据库类型将提供矢量功能(例如关系数据库的 mysql 和 postgresql)。
对于大多数数据库系统,使用数据库服务的应用程序不会直接访问数据文件——而是通过另一个进程进行访问——这与 PHP 尤其相关,因为它通常作为多个独立进程运行,没有复杂的文件锁定功能。
因此,如果您希望自己实现地理信息的 IP,我建议您坚持使用关系数据库或 nosql 密钥库(您不需要地理空间的东西来进行前向查找)。
但请记住,IP 到地理查找数据并不像销售产品的人们所相信的那样准确/精确。如果您的目标是获取有关用户的准确位置信息,HTML5 geolocation API 提供了更好的数据 - 问题在于用户浏览器上功能的可用性。
【讨论】: