php 读取 魔兽DBC文件
话说头疼了N天的问题,今天终于解决了。
要做Mangos的管理软件,Copy多玩魔兽数据库做了个相同功能的程序,但是开发中发现并不是全部的信息都体现在数据库里。
唯一的解决方法就是去读取dbc文件。
最开始想到的就是使用类似读取ip库的方法。但是问题很明显,不同的库文件存放的头文件长度不同,只能一点一点的试或是在网上找资料。
折腾了一天终于啊...
文件存放规则其实很简单,头长度为20,每4个字节为一个单位,标志者 标题,数据条数,每个字段长度,每行数据字段数,每个字符长度
也就是说正文的开始是从第21个开始,然后只要计算出没行数据的偏移量就可以了。
下面这个类就是完整的实现了dbc的读取和查询功能。
写这个类采用了几个小时,还有很多不完善的地方,而且页面有进行真正意义上的缓存。
之后会更好的完善这个功能类。
顺便提一句,网上那些胡乱回答的家伙去死吧,有的说wow的dbc 就是vfp的dbc数据库文件,有的说用odbc或adodb打开...
我倒是想去完善这些问题,可惜都已经过时限了。
<?php
/**
* WOW Dbc文件 读取核心类
*
* @package Eclair_Wow
* @version 1.0
*
* @desc -- 转载请标明出处 --
* @author Eclair.W wujian@myiee.com 95732081
*/
class Dbc
{
const HEADLENGTH = 20;
const HEADSIZE = 4;//头部每个标识的长度
protected $_enableCache = true;
protected $_fp;//文件资源
protected $head = array();
protected $pointer = 0;
protected $item_length;//每行的长度
protected $count; //数据的行数
protected $line_fileds;//每行的长度
protected $meter = 4;//每项的字符串长度
protected $dbc_file;
protected $_cache = array();
protected $_body_pos;//数据信息开始的位置
/**
* dbc 读取查询方法
*
* @param string dbc文件位置 $dbc_file
* @param array 每一项的名称 $head
*/
public function __construct($dbc_file,$head = array(),$enableCache = true)
{
ini_set('memory_limit','512m');
set_time_limit(0);
$this->dbc_file = $dbc_file;
$this->autoOpen();//打开文件资源
$this->readHead();
$this->head = $head;
$this->_enableCache = $enableCache;
}
public function __destruct()
{
fclose($this->_fp);
}
public function __ge
相关文档:
PHP取得成功的一个主要原因之一是她拥有大量的可用扩展。web开发者无论有何种需求,这种需求最有可能在PHP发行包里找到。PHP发行包包括支持各种数据库,图形文件格式,压缩,XML技术扩展在内的许多扩展。
扩展API的引入使PHP取得了巨大的进展,扩展API机制使PHP开发社区很容易的开发出几十种扩展。。扩展主要的思想是 ......
因为只有iis6.0才带有web扩展。而iis6.0是默认安装在win2003的。winxp是不能安装iis6.0的。那我们就用iis5.1吧。
环境:WINXP+IIS5.1
开始之前请先确定你的IIS安装是否成功,能否通过http://localhost
来
访问
一、先到PHP官方网下载个php-5.2.5-Win32.zip
,点击这里链接到官
网下载地址
二、下载好之后,直接全部 ......
本文提供了20个非常有用的PHP类库的名称和下载地址。这20个PHP类库包含了图标库,RSS解析,缩略图生成,支付,OpenID,数据库抽 象,PDF生成器等一系列功能。
下面是一些非常有用的PHP类库,相信一定可以为你的WEB开发提供更好和更为快速的方法。
图表库
下面的类库可以让你很简的创建复杂的图表和图片。当然,它们需要G ......
由于公司项目的需要,最经在研究Quercus一个纯java的php引擎。项目这两个需要做的就是将该引擎裁剪,做一个相对安全的版本,提供给ISV使用,同时,在引擎中提供默认的接口供调用。所以先研究了一下,在Quercus引擎的支持下,PHP如何与java集成。
以下是学习到的几点:
1、如果使用 Resin-IoC/WebBeans来组织应用的服 ......
#
启动服务的用户和组
user
lighttpd lighttpd;
#
开多少进程
worker_processes
2;
#
错误日志
error_log
/data/log/nginx/nginx_error/nginx_error.log crit;
#
pid
pid
/var/run/nginx.pid;
#
Specifies
the value for maximum file descriptors t ......