近期,工作上的业务并不是很忙。做了大半年的业务逻辑,尽管在 PHP 编码习惯和技巧上有所进步,初步熟悉了在高并发下 Redis 和 Memcache 缓存的使用和注意事项。但,应该借此闲暇时间探索下 PHP 底层的一些原理。这样,才是会有质的提升,写出更好的代码。

正如那句话“PHP 取得成功的一个主要原因之一是她拥有大量的可用扩展”,那就从 PHP 扩展入手了解下。

在此之前,大家肯定都了解“PHP 是 C 写的”。于是打开了 PHP 的源码,列出跟目录列表如下图:

0F506EEB-1487-4669-8315-68B212A3573F

PHP(5.6.4)跟目录列表

看到了熟悉的以后缀 .c 结尾的源文件。如图,有个名为“Zend”的文件夹很重要,这个就是 PHP 的核心。于是在网上搜到了两个若干 PHP 扩展的教程:

  1. http://www.laruence.com/2009/04/28/719.html
  2. http://www.walu.cc/phpbook

起初,耐心的看了 http://www.walu.cc/phpbook 的教程。并没有读完,只是看了前面的前 8 章。之后按着 http://www.laruence.com/2009/04/28/719.html 的教程,仿照着写了一个扩展。进行了编译、排查错误、编译、安装和测试等步骤,有了整体的感知。

在开发的过程中,可贵的也是难点就是要遵循 PHP 的扩展开发标准来做。我想,只要是熟悉了这个标准,至少写出一些简单的扩展是 OK 的了。在此基础上,继续深入的了解其特性,才可以开发出稳定、安全且高性能的扩展吧。

上述提到的源码(供学习交流之用):http://github.com/genialx/geno_file

Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.