在 Discuz 中应用 MogileFS 分布式文件存储系统

本文讨论内容基于 Discuz 7, Red Hat Enterprise Linux AS 4, MogileFs Server 2.17, MogileFS Client 1.08, MogileFS Utils 2.14

MogileFS 安装和配置

安装
基本安装顺序是 mogilefs-server(服务端), MogileFS-Client(客户端), MogileFS-Utils(工具包)。安装 MogileFS 其实并不复杂,但有些耗时,因为大多数据时间都被用在安装依赖包上了。在安装 MogileFS 之前有几个包是必需的:

Sys-Syscall-0.22.tar.gz
Danga-Socket-1.56.tar.gz
String-CRC32-1.4.tar.gz
Gearman-1.07.tar.gz
Gearman-Client-Async-0.93
Net-Netmask-1.9015.tar.tar 
Perlbal-1.70.tar.tar

若在安装过程中还提示其它包不存在,可以根据提示到search.cpan.org搜索相应的包装上。具体安装步骤可以参考这里这里
Continue reading

WordPress 的 Hook 机制在 Discuz 二次开发中的应用

最近工作需要对 Discuz 做二次开发,本着最小化改动方便以后升级的原则,我引入了 WordPress 的 Hook 机制(即 Plugin API)来降低二次开发代码与 Discuz 原生代码的耦合度。

WordPress 内部提供了许多 Hook(钩子),以便插件可以将相应的 action 或 filter 挂接上去接管或改进 WordPress 的默认处理来达到自己期望的目的,在处理完毕后将控制权重新交给 WordPress。而我们所要做的就是将这种机制移植到 Discuz 中,所幸的是,WordPress 的 Hook 机制并没有过多地依赖于它的其它核心程序,所以基本不需要做多少修改就可以拿来使用。
Continue reading

在 Windows 2003 IIS6 下跑 PHP 太不不靠谱了

为朋友写了个PHP版本的 socket 程序,在自己的机器环境(WIN2K3, IIS6, PHP4.4.6,ISAPI 模式)下测试一切 OK,到了实际环境却提示 Call to undefined function socket_create(),初步判断应该 php_socket.dll 未加载的缘故,echo phpinfo 也没有 socket 相关信息。

确认在 php.ini 文件里已经将;extension=php_sockets.dll这一行的分号去掉了,可 socket 扩展死活不加载。除了 PHP 版本有些差别(实际环境是4.4.9版本),其它设置都一样,正想将 PHP 降到 4.4.6 版本,却突然出现 Service Unavailable 提示,难不成要重装IIS?

不甘心,于是 google 解决方案。参照 Tmouse·方枪枪 的做法:

打开IIS管理器 - 网站 - 右键属性 - 服务 - 勾上"以IIS5.0隔离模式运行www服务"

IIS 的 Service Unavailable 故障消失,更为有意思的是 php_socket 扩展可以正常加载了 -_-! 要不是情况特殊,以后打死我也不用 IIS 跑 PHP 了。