Mon 1 Feb 2010
Zend Framework 发布了 1.10.x 系列,手册也更新了很多内容。今天抽空从 SVN 拉下来了一份最新的拷贝,编译成了中英文的 CHM 版,共感兴趣的朋友取阅。下载地址见下:
Zend Framework 手册 CHM 格式中文版(1.10.x)
Zend Framework 手册 CHM 格式英文版(1.10.x)
Mon 1 Feb 2010
Zend Framework 发布了 1.10.x 系列,手册也更新了很多内容。今天抽空从 SVN 拉下来了一份最新的拷贝,编译成了中英文的 CHM 版,共感兴趣的朋友取阅。下载地址见下:
Zend Framework 手册 CHM 格式中文版(1.10.x)
Zend Framework 手册 CHM 格式英文版(1.10.x)
Thu 24 Sep 2009
根据来自 PHP Windows 方面负责人 Pierre Joye 的消息,PHP 5.3 以后的主版本(比如 PHP6、PHP5.4?)将不再支持 VC6 编译。PHP6 的 windows 快照(snapshot)版本也将会在本月底停止发布。当然,PHP 5.3 目前依然支持 VC6 编译。
所以有个坏消息就是目前 Apache 还是用 VC6 编译的,届时可能会不能再使用 mod_php 模块了。当然也还有个好消息,未来的 Apache 2.4/3.0 的将会使用一个 mod_fcgid 模块来代替目前的 mod_php 作为 windows 平台的默认 php 处理模块。看来 fast-cgi 是大势所趋呀~:)
Wed 8 Jul 2009
经过近一年的准备,php 官方决定从现在起冻结了所有的代码提交请求,且将于本周五(2009-07-10)将版本控制系统从现有的 CVS 转为 SVN,http://cvs.php.net 转为 http://svn.php.net/。
中间一度有人提议转为 GitHub,但由于准备时间较晚,目前只在进行小规模测试。至于以后是否还会继续转为 GitHub,待定。估计悬……
php 最近动作频繁呀~~~
Wed 8 Jul 2009
最近 PHP 5.2.x 的 Release Manager Ilia Alshanetsky 提交了一个关于类型提示/转换(Type hinting/casting) 的 patch, 并且还发起了一个投票,决定是否将其作为 PHP 的一个新特性并入 PHP 开发代码。
可以说,绝大部分同志都对这个 patch 是持欢迎态度的,支持将其加入 PHP。但是对什么时候加入这个问题产生了巨大分歧。
PHP 5.3.x 的 Release Manager Lukas Kahwe Smith、PHP 创始人 Rasmus Lerdorf, Zend Engine 创始人之一 Zeev Suraski 等都反对在 PHP 5_3_X 分支添加这个功能。理由是 PHP 5_3_X 已经是个稳定分支(Stable Release),添加新特性的窗口期已过,建议在下一主要版本(Next Major Release,比如 PHP 5_4_X 甚至 PHP 6?)里添加。
而支持者除了 Ilia Alshanetsky、PHPUnit 作者 Sebastian Bergmann 外其他人虽不如反对者们大腕云集,但至少在数量上还是占据一定优势的。支持的理由就是 PHP 6 的发布太过遥远,倒腾了几年还没倒腾出来。而且就算发布了,估计还得上等一年半载的才会稳定下来。如此一来二去,黄花菜都凉了。所谓一万年太久,只争朝夕。择日不如撞日,干脆直接在 PHP 5_3_X 中加入算了。
目前双方仍在你来我往,唇枪舌剑,欢迎大家前去围观并发表自己的看法~
Tue 30 Jun 2009
在经历了 N 多的 RC 之后终于发布了 5.3 系列的正式版。根据平常俺的测试来看,还是有些烦人的 BUG 出现。待几个月后出了新的 release 后我再把服务器上的 php 给更新一下。不过平常用的开发到可以先尝试一下~~ :D
与此同时, Firefox 也发布了 3.5 版本。5.3 vs 3.5?哈哈~~
Mon 7 Apr 2008
三月底在上海 PEA 聚会上做了次关于“PHP 运行机制”的演讲,附件是演讲时用的幻灯片。这次演讲我给自己打 70 分,后面发挥得还不错,但整体上感觉内容组织还有改善的余地,演讲时有些话都重复了好几次,环视全场的机会也不多,以后有机会要注意改正。
ps: 其实单独看幻灯片估计也看不出什么东西来:D,有机会要把当时谈的内容给整理一下再发个 paper 上来。
Fri 22 Jun 2007
Thu 14 Jun 2007
源码分析,首先得看源码。记事本可以看,EditPlus 也可以看,但显然具有语法着色功能的 EditPlus 要比记事本爽。更显然,M$ 的 Visual C++ 比 EditPlus 还要爽。:D 因此我推荐的第一款神兵就是 M$ Visual C++(Sorry, Linuxer~)。既然用了 Visual C++ 那么有一款它的插件我们不得不提:Visual Assist X,还没有她的朋友尽快拥有她吧~
OK,现在源码是可以看了,而且是很舒服地在看,但有时我们还想实地进行单步调试以一窥究竟。要调试自然得先编译。很不幸,PHP 在 Windows 环境下的编译和调试并不像想象中的那么简单。我们至少得比在 xNix 环境下多做一下几个步骤:
为方便大家不做重复性劳动,我把我现在用的 PHP 调试环境打包发上来,大家下载后直接解压到某一目录即可。所需另外做的也只是根据你解压的目录设置一下编译的环境变量(见步骤 3),之后就可直接进入 $work\win32 打开 php5ts.dsw。
工程文件说明:这其实是个“精简版”PHP 的工程文件,里面的 PHP 是 php 5.2.8 的源码,但只包含 date、filter、pcre、reflection、session、standard、tokenizer 这几个内建扩展。另外 php5apache2 的 sapi 不能编译,要想编译它得再去下一份 Apache 2 的源码。除此之外还删除了大部分的测试脚本。
最后再说一下分析 PHP 源代码所需要一些基础知识。首先当然得有一定的 C 语言基础。在最后分析 Zend Engine 时可能还需要一些编译器方面知识,最好能看懂一些 lex&yacc 的语法文件(PHP 采用的是 flex 和 bison,但在语法层面相差无几)。最后是能有一定的调试技术。包括在 VC++ 环境下的有源码调试技术和无源码的二进制代码调试技术(这种情况下我一般用OllyDbg)。其中 C 语言基础是必须的,而后面的两种知识/技术则可有可无,但有的话可以达到事半功倍之效。
Sat 9 Jun 2007
目前在 PHP 社区尤其是国内的 PHP 社区对 PHP 内核这方面讨论的比较少。我平时常看一些 PHP 源码,对 PHP 的运行机制算是有一些认识吧,因此我打算写一些这方面的文章,算是抛砖引玉。最终目标我希望可以做成一个关于 PHP 内核的中文百科全书。应该说这是一个不算太小的工程,依我个人之力几乎不可能完成。更何况老子曾经曰过:“知者不言,言者不知”,相信潜在水下面的大牛(水牛?^_^)还有 N 多。所以希望大家群策群力,共同完成这个项目。
整个项目我初步打算以 PHP 5.2.x 的源码为研究对象,侧重于对 Zend Engine 的表述,兼顾一些 SAPI 层。下面是我列出的一份清单,大家看看还有没有什么遗漏或者内容编排不合理之处。请诸位畅所欲言,有啥说啥,即使跑题也没关系~
Thu 7 Jun 2007
以前每当一个 Zend Studio 的新版本发布时都会同时发布一个新版的 Zend Studio Server 组件,这个组件可以让我们很方便地进行远程调试。但是自从 Zend 发布了 Zend Platform 以后他们就不再更新 Zend Studio Server 组件了。这就导致我们只能远程调试 PHP 5.1.x 的环境,而不能调试 PHP 5.2.x。要想调试 PHP 5.2.x 只能装一个庞大的 Zend Platform。:(
因此我一直在找一个“轻量级”的解决方案。近日在逛 Zend.com 时发现了一个好东西:Zend Studio Web Debugger,直觉告诉我,这就是我想要的。果不其然,今天试验成功!
下面就说一说我的试验步骤:
zend_extension_ts="C:\Program Files\Zend\ZendOptimizer\ZendExtensionManager.dll"zend_extension_manager.debug_server_ts="C:\Program Files\Zend\ZendDebugger-5.2.14-Windows-i386"
zend_debugger.expose_remotely=allowed_hosts
zend_debugger.allow_hosts=127.0.0.1/32,192.168.1.0/16
zend_debugger.allow_tunnel=127.0.0.1/32简单总结一下:Zend Studio 的远程调试功能是由 Zend Studio Server 组件(ZendDebuger.dll)提供的。本质上这是一个 Zend 扩展,因此你只要能把这个 Zend 扩展启用就可以了。只是 Zend 公司出品的 Zend 扩展只能由那个 Zend Extension Manager 负责加载,所以我们才需要做一些额外的步骤,否则只需简单地加一行 zend_extension_ts = xxxxxx 而已。