易截截图软件、单文件、免安装、纯绿色、仅160KB

PHP源代码简单分析

PHP源代码简单分析
1. 目录结构
   1. build 和编译有关的目录。
   2. ext 扩展库代码,例如 Mysql、zlib、iconv 等我们熟悉的扩展库。
   3. main 主目录。
   4. sapi 和各种服务器的接口调用,例如apache、IIS等,也包含一般的fastcgi、cgi等。
   5. win32 和 Windows 下编译 PHP 有关的脚本。用了 WSH。
   6. Zend 文件夹核心的引擎。
2. PHP使用Lex和Yacc对语法进行解析。
   在 Zend 目录下有两个文件 zend_language_parser.y 与 zend_language_scanner.l 他们是Lex和Yacc的脚本文件,通过这两个脚本文件生成对应的.c和.h文件,实际上这在 linux 下非常普遍,gcc 也使用它们产生语树。
3. PHP如何使用Mysql?
   ext 目录下有一个 mysql 子目录,这个目录中的php_mysql.c 和 php_mysql.h 负责 PHP 与 Mysql 操作。使用了 Mysql 手册中的 C 语言 API。
4. 安全模式?
   main 文件夹下的safe_mode.h 和 safe_mode.c 文件负责PHP的安全模式。
5. 那些是 PHP 的标准函数,那些是扩展函数?
   ext 目录下英文意思是扩展,而在 ext 下还是有一个 standard 文件夹,存放着 PHP 中的标准函数,例如 explode 这个函数是在 ./ext/standard/string.c 下定义的。
6. PHP 源代码中的PHP_FUNCTION(xx) 宏。
   这个宏用来检验一个函数名称是否合法。合法的函数名称应该由小写字母及下划线组成。
7. 那些函数集是标准的?
   通过 ./ext/standard/ 目录我们可以看到以下常用函数集是标准的。字符串函数集、数组函数集、文件及目录操作函数集、md5算法等。
8. 一些函数的实现过程
   1. fsockopen, pfsockopen 的实现
      这两个函数的实现离不开 ./ext/standard/fsock.c 文件中的 php_fsockopen_stream 函数。具体的socket都在./main/network.c 中实现。
9. PHP 函数集注册过程
   在./main/internal_functions.c 中有一个数组 php_builtin_extensions 默认下有以下成员:
  
   1. phpext_bcmath_ptr
   2. phpext_calendar_ptr
   3. phpext_com_dotnet_ptr
   4. phpext_ctype_ptr
   5. phpext_date_ptr
   6. phpext_ftp_ptr
   7. phpext_has


相关文档:

[原创] PHP 兼容 Curl/Socket/Stream 的 HTTP 操作类

<?php
/************************************************************
* 描述:HTTP操作类
* 作者:heiyeluren
* 创建:2009/12/13 04:43
* 修改:2009/12/16 10:30 实现基本HTTP各种接口操作支持
*
************************************************************/
/**
* HTTP功能工厂方法类
......

动态网站Web开发PHP、ASP还是ASP.NET

  这是一个经常被提出的问题,并且它很容易把人们带入争论Linux还是Windows的歧途。这样的争论事实上反映出了对于相互竞争的Web开发技术要进行并行分析是多么困难的一件事情,而这一难度同时因为开发人员对任何可比较操作系统的不同意见而大大增加。
  所以与其继续参与到这样的争论中,我们还不如来看看每一项技术对 ......

Apache 服务器 Php开发环境的配置

这是我最近几天的学习心得,与大家共享。
1,一般情况下我们用记事本写一个简单的PHP页面,放在Apache服务器安装目录下的htdocs目录下,即可访问。
这时,在httpd.conf文件中对应的服务器根目录配置为:DocumentRoot "D:/Apache Software Foundation/Apache2.2/htdocs"
目录配置为:<Directory "D:/Apache Software F ......

(PHP)CRUD类及分页类

之前写的crud类实在比较简单(http://blog.csdn.net/yycai/archive/2009/12/15/5012353.aspx),重新封装了一下:
<?php
/**
* 自动化数据表操作类
* @example
* <code>
* $db = cls_crud::factory(array('table'=>'article'));
* $data = $db->get_block_list(array('category_id' => 3), ......

php 时间戳

PHP时间大的来分有两种,一是时间戳类型(1228348800),二是正常日期格式(2008-12-4)
所以存到数据库也有两种形式了(真正不止,我的应用就两种),时间戳类型我是保存为字符串的,这个是比较方便的.
正常日期类型是保存为DATE型的.
这两个要注意一下,我平时用两种,所以,前几天建的表,把时间类型存为DATE的,我还一直用时间戳保存 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号