风之缘_百度空间
 
文章列表
 
2012-03-30 14:49

作为一个PHP开发者,发现自己在日常工作中越来越频繁地查看PHP源码,以帮助自己追查各种奇怪的错误,特别是那些文档中缺失或者描述错误的地方。在接下来的系列文章中,我将分享自己读PHP源码的心得,让更多的PHP开发者学会去查看PHP背后的C语言实现代码。

本文将介绍PHP源码(基于PHP5.4)的基础:去哪里找到源码、代码的结构和C语言的一些基础知识。

PHP源码在哪里

获取PHP源码最方便的办法是去
 
2012-02-08 20:28

本文介绍PHP5.4的新特性及示例。

改进的Session扩展

在session中存储上传进度信息
过去需要通过第三方扩展如uploadprogress 来获取文件上传进度信息,现在则可以从session数据中获取了。

这个特性需要先在php.ini配置,如下示例:

; Enable upload progress tracking in $_SESSION
; http://php.net/session.upload-progress.enabled

 
2011-12-05 17:05

因为要生成png格式的验证码,所以调用了imagepng函数,没想到以前运行正常的函数,居然导致php-cgi程序挂掉了,报出的错误是:
libpng warning: Application was compiled with png.h from libpng-1.5.2
libpng warning: Application  is  running with png.c from libpng-1.2.44

我在编译gd-2.0.33和php的时候,都是使用了相同参数:--with-png-dir=/home/XXX/lib,按理说应该只会把我自己编译的libpng1.5给链接进来。
用ldd命令查看php-cgi程序,

 
2011-09-03 21:17

类的多重继承已经是广受诟病的事情,但是在某些情形下,它确实也能带来便利。对于PHP而言,类只能单根继承,虽然可以通过接口实现多种数据类型。接口可能在规划糟糕的继承结构中导致大量的代码重复,即使优秀的架构中,多个实现相似方法的类也会出现很多重复的代码。考虑到这些问题,PHP 5.4引入了 traits 这个看似多根继承的新特性,使我们可以更优雅的解决上述问题。Traits 使得PHP类能够水平扩展,而不仅止于垂直扩展。换句话说,我们可以用traits实现代码一次,就可以在多个类中使用,并且不需要像多根继承那样

 
2011-07-07 12:28

这个问题的背景是这样的:准备写一个PHP程序发送邮件,里面用到了PEAR的Mail组件,但是在php.ini中并没有把PEAR库放在include path中。因而想在自己的脚本开头,自动判断当前PEAR库在哪个目录,然后加到include path中,这样就不用自己去配置PEAR库在哪里了。

看到这个需求的第一反应是PHP中应该有__FILE__这样类似的常量来获取,查了PHP手册,发现get_defined_constants()这个函数,于是调用,从结果可以看到PHP内核定义了多个编译路径相关的常量:
[PEAR_INSTALL_DIR] => PEAR库安装路径

 
2011-07-06 21:21

今天在CentOS 5.5上使用自己写的自动化部署工具安装PHP和Nginx,结果PHP居然在configure的时候错误了。命令行下提示:
configure: error: build test failed.  Please check the config.log for details.
下载config.log,最后的信息是:
configure:20548: checking for xml2-config path
configure:20706: checking whether libxml build works
configure:20733: gcc -o conftest -g -O2   -Wl,-rpath,/home/wulijun/lib/lib -L/home/wulijun/lib/lib conftest.c 
    -lrt -l

 
2011-03-19 23:19

前几天有个朋友,装了一个易想的团购程序。据他反映,刚开始登录后台时的验证码是能正常出来的,后来不知怎么搞的,验证码出不来了。既然刚开始能出来,说明php环境是符合要求的(如GD扩展肯定是有的)。按照提供的url打开验证码,浏览器显示图片错误,通过fiddler抓包看,请求的数据包大小和官方示例程序的验证码请求的大小差不多,感觉也没有问题。于是把两个请求的结果另存下来,用urltraedit打开看二进制数据,发现无法显示的图片开头出现了EF

 
2010-12-14 20:28

开发中使用了一个以前写的调整iframe高度的JavaScript函数:

/**
 * 调整嵌入式页面的高度
 *
 * @param objFrame 嵌入式页面对象
 * @param intHeight 最大高度
 * @return void
 */
function adjustFrameHeight(objFrame, intHeight) {
    var objFrameDocument = objFrame.contentWindow.document;
    var intDestHeight = objFrameDocument.body.scrollHeight;
    if (typeof intHeight != 'undefined

 
2010-09-24 18:18

最近使用SimpleXML扩展来处理XML,且XML文件是GBK编码的,输出时导致中文出现了乱码,经过调试发现SimpleXML扩展处理后的输出结果肯定是UTF-8编码。今天抽空总结一下SimpleXML扩展的编码规则,作一个备忘。

输入的处理

SimpleXML支持多种编码的XML文件输入,只需要在文件头部标明文件的编码即可,如<?xml version="1.0" encoding="gbk"?>。SimpleXML读入源文件后,会自动转换为UTF-8,然后再进行各种处理。

输出的处理

Simple

 
2010-08-24 09:23

如果你以前看过我写的PHP内核相关的内容,那么你一定记得我说过PHP中的任何东西都是哈希表。这不一定是真的,但是除了zval,哈希表确实是PHP中的最重要的结构了。在为Dutch PHP 大会准备"PHP Under The Hood" 演讲时,IRC上有个关于extension_loaded()比function_exists()快的问题,这让人感到疑惑,它们底层都是简单的哈希查找,而哈希查找的时间复杂度

 
     
 
 
个人档案
 
sc05011036
男, 
上海 浦东新区 
 
   
 
文章分类
 
 
 
 
 
 
 
     
 
最新评论
 
     
 
最近访客
 
 

DMLZJ

imspaceqa001

1520114961

lainey85

xcf_ethan

wwwe1eecom

lzscf

whtoo
     
 
订阅我的空间
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     

帮助中心  |  空间客服  |  投诉中心  |  空间协议
©2012 Baidu