用 PHP 写离线浏览程序
借助 XMLHTTP,我们可以很快速地制作一个离线浏览程序。步骤如下:

1. 发送请求,服务器端下载网页代码,生成 MHT 文件的头部信息和首网页的数据并写入文件。解析出所有图片及链接文件的 URL,返回给客户端。

2. 客户端收到 URL 列表后,建立 N 个 XMLHTTP 对象,并依顺序发送请求,补充网页中包含的文件的内容。

3. 所有 URL 处理完毕后,MHT 文件中的数据也已添加完整,离线浏览用的文件就生成了。
Current language: Chinese (Simplified)
再次鄙视腾讯
昨天刚看到猪哥的Blog上写道 Miranda IM 上旧版的 QQ 协议插件不能用了,还纳闷我这怎么正常呢。结果今天早上登陆时,软件弹出了一个对话框:

(图片已丢失: mim_qq_alert.jpg)

再次鄙视腾讯,又禁用低版本协议,试图阻止人们使用其他软件使用 QQ。到官方网站的协议插件下载页一看,1月23日有一次更新,版本号升级到了 .23。换上新版插件后能正常使用了。

上星期刚把 Miranda QQ 插件更换为 libeva 版本的,今天腾讯就废除 QQ 2003 协议了。这下以前用的那个 OpenQ 版本彻底没用了。
Current language: Chinese (Simplified)
总结
对编写 Files 的过程中遇到的问题,总结与记录一下:

尽量不要搞特殊。文件名中不能含有 * ? | : " 等字符的常规最好还是要遵守,即使现在不会引起错误。
目录最好单建一个表存储,有利于操作。若只在文件信息的表中记录路径,空文件夹会带来很多问题,通常会使问题变得很复杂。
Current language: Chinese (Simplified)
文件系统函数库和目录函数库仿真类基本完成
现在支持 basename, copy, dirname, file_exists, file_get_contents, file_put_contents, filemtime, filesize, filetype, is_dir, is_file, is_writable, mkdir, rename, rmdir, unlink, opendir, readdir, closedir, scandir 这些函数。函数的参数及返回值与 PHP 内置的函数基本相同。

数据库部分共使用 4 个表: cache, file_index, file_storage, path_index。其中 cache 表存储缓存,加速列表的速度;file_index 表存储文件索引,包含文件所在文件夹的ID、文件大小、最后修改时间等信息;path_index 表存储文件夹的信息。对于比较小的文件,程序默认将其保存在数据库中,加快读取速度;比较大的文件则保存在磁盘上。均使用 MD5 HASH 值作为标识符。
Current language: Chinese (Simplified)
在数据库中存储文件
最近 Files 的功能一再增加,情况也越来越复杂。面对着越来越多的函数和 SQL 查询,脑子越来越乱。

终于下决心写一套使用方法和 PHP 内置的文件系统函数一样的函数了。

这也是更改存储结构的一次机会,所以动手之前需要先总结一下教训,改进一下结构。
Current language: Chinese (Simplified)
More entries: [1]
« Previous page · Next page »