QQWry.DAT是什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/25 16:34:25
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 方式下不可以。