![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PHP本质
文章平均质量分 59
深度Java
这个作者很懒,什么都没留下…
展开
-
Windows环境配置xdebug调试PHP
1.版本对应php版本,TS 和NTS,VC9和VC11,32位和64位都需要正确才可以。首先用phpinfo查看PHP安装版本2.下载对应版本https://xdebug.org/download.php比如下载的是32位的TS版本:php_xdebug-2.4.1-5.4-vc9.dll,这个文件复制进任意目录都可以。3.配置php.ini文件[Xdebug] ;指定Xdebug扩展文件的原创 2017-02-01 14:20:02 · 14219 阅读 · 0 评论 -
spl_autoload_register与autoload区别
spl_autoload_register(PHP 5 >= 5.1.2)spl_autoload_register — 注册__autoload()函数说明bool spl_autoload_register ([ callback $autoload_function ] )将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。如果在你的程序中已经实现了__a转载 2012-07-24 19:06:35 · 4456 阅读 · 1 评论 -
Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能
关于mod_xsendfilehttps://tn123.org/mod_xsendfile/ Lighttpd中的X-sendfileRoR网站如何利用lighttpd的X-sendfile功能提升文件下载性能使用X-sendfile方式,服务器端应用程序不需要读取下载文件了,只需要设置response的header信息就足够了,此外还要附加一个信息“X-LIGHTTPD-send-file”信原创 2012-07-16 10:46:14 · 12403 阅读 · 1 评论 -
PHP一些十分严重的缺陷
1. 对递归的不良支持递归是一种函数调用自身的机制。这是一种强大的特性可以把某些复杂的东西变得很简单。有一个使用递归的例子是快速排序(quicksort)。不幸的是,PHP并不擅长递归。Zeev,一个PHP开发人员,说道:“PHP 4.0(Zend)对密集数据使用了栈方式,而不是使用堆方式。也就是说它能容忍的递归函数的数量限制和其他语言比起来明显少。”见bug 1901。这是一个很不好的借口。每一转载 2012-07-16 10:19:23 · 4152 阅读 · 2 评论 -
windows版本下使用xdebug
下载xdebug:http://www.xdebug.org/download.php这个版本:http://www.xdebug.org/files/php_xdebug-2.2.0-5.3-vc9.dll 拷贝到php的ext目录配置php.iniextension=php_xdebug-2.2.0-5.3-vc9.dll;xdebug.profiler_enable=1;xdebug.pro原创 2012-06-07 11:21:30 · 3770 阅读 · 0 评论 -
kcachegrind安装
http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindDownloadhttp://hi.baidu.com/wangxinhui419/blog/item/4a7409c78c22b4c8d100608a.htmlhttp://wxiner.blog.sohu.com/156841393.html说明:linux下如果安装不原创 2011-12-06 20:22:46 · 10507 阅读 · 0 评论 -
php的POSIX 函数以及进程测试
参考:http://cn.php.net/manual/zh/ref.posix.phpecho posix_getpid(); //8805sleep(10);?>再用#ps -ax这个时候如果多开开个浏览器请求,就会发现Apache自动增加了几个新的进程我们发现并非一直请求同一个进程重启apache# /usr/local/apache2/bin/apachectl restart我们发现Ap原创 2012-04-20 20:52:09 · 7031 阅读 · 0 评论 -
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment vari
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.运行/usr/local/webserver/php/bin/phpize时出现:Configuring for:PHP Api Ver原创 2012-04-17 22:44:19 · 29737 阅读 · 2 评论 -
用C语言扩展PHP功能
用C语言扩展PHP功能建议读者群:熟悉c,linux,php PHP经过最近几年的发展已经非常的流行,而且PHP也提供了各种各样非常丰富的函数。但有时候我们还是需要来扩展PHP。比如:我们自己开发了一个数据库系统,而且有自己的库函数来操作数据库,这时候,如果想在PHP中来操作我们自己的数据库的话,就必须自己扩展PHP了,像mysql,postgresql,之所以PHP能够提供这些数据库操作函数转载 2012-03-22 10:14:12 · 2341 阅读 · 0 评论 -
PHP Extension programming
PHP Extension programmingFrom PHPBB用户手册(重定向自编写PHP扩展)Jump to: navigation, search本文由hshq_cn翻译并于2007-12-13发表于ChinaUnix, 原文由Sara Golemon 发表在Zend Devzone Contents[隐藏]1 介绍2 扩展是什么?3 生存周期4 内存分配5 建立构建环境6 Hello转载 2012-03-22 15:30:56 · 3298 阅读 · 0 评论 -
Zend API:深入 PHP 内核
http://roygu.com/doc/blog/dive-to-php-core.htmlZend API:深入 PHP 内核译序及目录译序网上关于 PHP 的资料多如牛毛,关于其核心 Zend Engine 的却少之又少。PHP 中文手册出现已 N 年,但 Zend API 的翻译却仍然不见动静,小弟自觉对 Zend Engine 略有小窥,并且翻译也有助于强迫自己对文章的进一步理解,于是尝转载 2012-03-22 10:45:13 · 4808 阅读 · 0 评论 -
快速开发一个PHP扩展
快速开发一个PHP扩展作者:heiyeluren时间:2008-12-5博客:http://blog.csdn.net/heiyeshuwu本文通过非常快速的方式讲解了如何制作一个PHP 5.2 环境的扩展(PHP Extension),希望能够在图文的方式下让想快速学习的朋友了解一下制作过程。需求:比如开发一个叫做 heiyeluren 的扩展,扩展里就一个函数 heiyeluren_test转载 2012-03-21 18:21:18 · 1794 阅读 · 1 评论 -
用ext_skel,实现一个PHP扩展,添加到PHP并调用
http://www.shinrun.com/PHP一、开始之前1. 系统环境:FreeBSD 8.22. AP环境:即已经装好的Apache2.2.17、PHP5.3.8环境3. PHP源码:下载稳定版本源码到当前用户的目录,如,下载PHP 5.3.8到/usr/home/abc下。4. 其它要求(如果你要编译整个PHP):autoconf版本为2.13或2.59;二、解压php源码包,阅读RE转载 2012-03-12 17:12:42 · 9947 阅读 · 0 评论 -
PHP autoload 函数
(1) autoload机制概述 在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利。这也是OO设计的基本思想之一。在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可。下面是一个实际的例子: /* Person.class.php */ class转载 2012-07-24 18:59:18 · 3938 阅读 · 1 评论 -
使用 Strace 调试工具
strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统呼叫及它所接收的系统信息。strace是一个有用的小工具,它可以通过跟踪系统调用来让你知道一个程序在后台所做的事情。Strace是一个基础的调试工具,在大多数Linux系 统上默认已经安装;但是即便你不是在跟踪一个问题的时候它也是一个极好的软件。它能告诉你很多关于一个Linux程序怎样工作的信息。 让我们以一个简单的原创 2012-10-18 11:19:29 · 2781 阅读 · 1 评论 -
鸡肋的PHP单例模式
单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。 /* 单例模式举例,其要点如下: * * 1. $_instance 必须声明为静态的私有变量 * 2. 构造函数和克隆函数必须声明为私有的,这是为了防止外部程序 new 类从而失去单例模式的意义 * 3. getInstance()方法必须声明为公有的,必须调用此方法以返回唯一实例转载 2012-10-19 15:04:29 · 3129 阅读 · 0 评论 -
php扩展xdebug安装以及用kcachegrind系统分析
一:安装安装方法一:编译安装 1、下载PHP的XDebug扩展,网址:http://xdebug.org/# wget http://pecl.php.net/get/xdebug-2.1.2.tgz# tar -xzf xdebug-2.1.2.tgz# xdebug-2.1.2# cd xdebug-2.1.2# /usr/local/php/bin/phpize# ./configure -原创 2011-12-02 18:47:19 · 11936 阅读 · 2 评论 -
使用xdebug分析thinkphp框架函数调用图
开发中需要性能调优,使用xdebug分析thinkphp框架函数调用图。 关于xdebug的安装参考这2篇NetBeans配置Xdebug 远程调试PHPphp扩展xdebug安装以及用kcachegrind系统分析 1.安装xdebug需要先去http://www.xdebug.org看看一些文档,xdebug作为php扩展安装# http://www.xdebug.org/files/xdeb原创 2015-10-27 18:07:23 · 6724 阅读 · 0 评论 -
PHP安装eAccelerator
eAccelerator是一个非常优秀的PHP加速器,通过缓存编译之后的PHP代码文件,使得PHP编译对服务器的开销几乎为零。eAccelerator本身的开销也是极少的 最新的PHP5.4.8安装eAccelerator,需要注意的是要安装高版本的,低了编译不过去。官网:http://eaccelerator.net/ 1.下载安装eAccelerator#wget https://github原创 2012-11-17 16:11:22 · 13674 阅读 · 3 评论 -
用C语言写PHP扩展
用C语言写PHP扩展1:预定义在home目录,也可以其他任意目录,写一个文件,例如caleng_module.def内容是你希望定义的函数名以及参数:int a(int x,int y)string b(string str,int n) 2:到php源码目录的ext目录#cd /usr/local/php-5.4.0/ext/ 执行命令,生成对应扩展目录#./ext_skel --extname原创 2012-03-22 15:20:13 · 15397 阅读 · 6 评论 -
The HipHop Virtual Machine
目前Facebook已将该HipHop虚拟机开源,源代码发布在GitHub上。关于该工具的技术原理在Facebook的开发者页面上有一篇详细的文章介绍,查看这里。如果看不到的可以看下面的转载: We're always looking for ways to make our computing infrastructure more efficient, and in 2010 we deplo转载 2012-12-11 21:18:46 · 9845 阅读 · 0 评论 -
PHP安装扩展mcrypt以及相关依赖项 【PHP安装PECL扩展的方法】
一:Mcrypt简介Mcrypt是PHP的一个扩展,完成了常用加密算法的封装。其实该扩展是对mcrypt标准类库的封装,mcrypt完成了相当多的常用加密算法,如DES, TripleDES, Blowfish (default), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 和 GOST加密算法,并且提供了CBC、OFB、CFB 和 ECB原创 2012-11-20 14:16:04 · 27471 阅读 · 2 评论 -
PHP安装与使用VLD查看opcode代码【PHP安装第三方扩展的方法】
需要分析PHP代码的性能,或者说实现同样功能的代码到底哪个更好呢?或者说想知道底层的实现可以使用VLD查看opcode下载与安装VLD# wget http://pecl.php.net/get/vld-0.11.2.tgz# tar zxvf vld-0.11.2.tgz# cd ./vld-0.11.2# /usr/local/php/bin/phpize 或者直接p原创 2011-11-23 01:28:09 · 21611 阅读 · 2 评论 -
php内核探索方法与资源
PHP内核探索TIPI深入理解PHP内核风雪之隅PHP源码分析《php扩展开发及内核应用》百度XLQGod's blogcodinglabsPHP内核探索:从SAPI接口开始PHP内核探索:一次请求的开始与结束PHP内核探索:一次请求生命周期PHP内核探索:单进程SAPI生命周期PHP内核探索:多进程/线程的SAPI生命周期PHP内核探索:Zend引擎PHP内核探索:再次探讨SAPIPHP内核探索原创 2012-11-18 21:13:03 · 10032 阅读 · 1 评论 -
PHP新的垃圾回收机制:Zend GC详解
概述 在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount的值,如果refcount为0,那么变量的空间可以被释放,否则就不释放,这是一种非常简单的GC实现。然而在这种简单的GC实现方案中,出现了意想不到的变量内存泄漏情况(Bug:http://bugs.php.n转载 2012-11-17 22:11:16 · 5465 阅读 · 1 评论 -
phpize
安装(fastcgi模式)的时候,常常有这样一句命令:/usr/local/webserver/php/bin/phpize一、phpize是干嘛的?phpize是什么东西呢?php官方的说明:http://php.net/manual/en/install.pecl.phpize.php phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块 比如你想在原来编译好的ph原创 2012-11-17 12:06:09 · 7737 阅读 · 0 评论 -
linux上使用strace查看C语言级别的php源码【一种方法】
如果你希望看到C语言级别的php代码就需要使用strace这个默认是安装了的,如果没有安装可以#yum install strace 查看httpd进程#ps auxw | grep httpd有多个,必须停止apache [root@localhost usr]# /usr/local/webserver/apache2/bin/apachectl stop 启动单进程httpd[root@lo原创 2012-11-18 00:06:04 · 16269 阅读 · 3 评论 -
从奥运订票系统说起——谈FastCGI 与IT 架构
2008年,对于首都人民来说,没有什么比奥运会更大的事情了。如何买到一张称心如意的比赛门票,也成了很多人的一个梦想。然而,在奥运官网抢票购买的时候,这个梦想却轻易地被网上购票系统的当机击成碎片,很多充满热情的老百姓们也因此郁闷无比。由于搜狐承担了奥运的官网,我又在那里工作过相当长一段时间,很多兄弟抢票失败,于是便认定是搜狐开发的系统太烂,而找我抱怨。其实当时我也很是郁闷:首先这个系统并非搜狐开发;转载 2011-11-22 16:52:49 · 3093 阅读 · 0 评论 -
PHP 预编译加速: eAccelerator的安装和性能比较
eAccelerator已经是很常用的PHP平台预编译加速的手段了。今天在自己机器上尝试安装了一下,备忘如下:获得源代码:http://bart.eaccelerator.net/source/编译:需要有autoconf支持,解包后在源程序目录下:/usr/local/bin/phpize./configure --enable-eaccelerator=shared --with-php-co转载 2012-03-21 10:14:25 · 2732 阅读 · 0 评论 -
深入探讨PHP中的内存管理问题
一、 内存在PHP中,填充一个字符串变量相当简单,这只需要一个语句"<?php $str = 'hello world '; ?>"即可,并且该字符串能够被自由地修改、拷贝和移动。而在C语言中,尽管你能够编写例如"char *str = "hello world ";"这样的一个简单的静态字符串;但是,却不能修改该字符串,因为它生存于程序空间内。为了创建一个可操纵的字符串,你必须分配一个内存块,并转载 2012-04-07 11:19:30 · 2722 阅读 · 0 评论 -
php-fpm – 配置详解
http://duyongguang.blogbus.com/logs/156375484.htmlphp5.3自带php-fpm/usr/local/php/etc/php-fpm.confpid = run/php-fpm.pidpid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启error_log = log/php-fpm.log错误日志,默认在安装目录中的var转载 2012-04-02 18:19:00 · 5008 阅读 · 0 评论 -
PHP APC安装与使用
最简单的方法,找到php安装目录的pecl自动安装:# /usr/local/php/bin/pecl install apc 下面按提示一步步完成即可 配置/etc/php.ini 末尾加入extension=apc.so手动安装:官网 http://cn2.php.net/manual/zh/book.apc.php下载http://pecl.php.net/package/APC 找最原创 2011-12-02 15:58:57 · 15684 阅读 · 1 评论 -
PHP安装parsekit扩展查看opcode
也可以通过VLD查看,具体请看本人写的http://blog.csdn.net/21aspnet/article/details/7002644 安装parsekit扩展http://pecl.php.net/package/parsekit下载最新的#wget http://pecl.php.net/get/parsekit-1.3.0.tgz安装过程省略可以参考 本人写的http://blo原创 2011-12-02 16:44:00 · 3374 阅读 · 0 评论 -
PHP底层工作原理
简介 先看看下面这个过程:我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);PHP总共有三个模块:内核、Zend引擎、以及扩展层;PHP内核用来处理请求、文件流、错误处理等相关操作;Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;扩展层是一组函数、类原创 2011-11-15 15:55:08 · 8396 阅读 · 1 评论 -
深入理解PHP内存管理之谁动了我的内存
本文地址: http://www.laruence.com/2011/03/04/1894.html转载请注明出处首先让我们看一个问题: 如下代码的输出,var_dump(memory_get_usage());$a = "laruence";var_dump(memory_get_usage());unset($a);var_dump(memory_get_usage());输出(在我的个人电脑原创 2011-11-15 15:30:10 · 2187 阅读 · 0 评论 -
深入理解PHP之数组遍历
本文地址: http://www.laruence.com/2009/08/23/1065.html经常会有人问我, PHP的数组, 如果用foreach来访问, 遍历的顺序是固定的么? 以什么顺序遍历呢?比如:$arr['laruence'] = 'huixinchen';$arr['yahoo'] = 2007;$arr['baidu'] = 2008;foreach ($arr原创 2011-11-15 15:23:29 · 2242 阅读 · 0 评论 -
深入理解PHP原理之变量作用域
作者:laruence(http://www.laruence.com/)地址: http://www.laruence.com/2008/08/26/463.html PHP变量的内部表示是如何和用户脚本中的变量联系起来的呢?也就是说,如果我在脚本中写下: $var="laruence"; echo $var;?> ZE是如何把我的变原创 2011-11-15 15:09:02 · 1994 阅读 · 0 评论 -
深入理解PHP之OpCode
OpCode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL。 此文主要基于《 Understanding OPcode》和 网络,根据个人的理解和修改,特记录下来 :PHP代码:<?php echo "Hello World"; $a = 1 + 1; echo $a;?> PHP执行这段代码会经过如下4个步骤:1. Scan原创 2011-11-15 14:37:33 · 5784 阅读 · 0 评论 -
深入理解PHP原理之变量(Variables inside PHP)
或许你知道,或许你不知道,PHP是一个弱类型,动态的脚本语言。所谓弱类型,就是说PHP并不严格验证变量类型(严格来讲,PHP是一个中强类型语言,这部分内容会在以后的文章中叙述),在申明一个变量的时候,并不需要显示指明它保存的数据的类型:$var = 1; //int$var = "laruence"; //string$var = 1.0002; //float$var = array(); //原创 2011-11-15 14:45:57 · 4712 阅读 · 0 评论 -
深入浅出PHP(Exploring PHP)
一直以来,横观国内的PHP现状,很少有专门介绍PHP内部机制的书。呵呵,我会随时记录下研究的心得,有机会的时候,汇总成书。:)今天这篇,我内心是想打算做为一个导论:PHP是一个被广泛应用的脚本语言,因为它的成功,所以很多时候,我们应用PHP的时候是更不不需要考虑底层到底是怎么实现的。我相信大多数的 PHP程序 员是不会去考虑这一点的。从我接触PHP开始,到今天也就是3年,这三年里,前俩年我一直都是原创 2011-11-15 14:45:40 · 3219 阅读 · 0 评论