PHP
文章平均质量分 93
hguisu
这个作者很懒,什么都没留下…
展开
-
gzip压缩输出
一、gzip介绍 gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式。软件的作者是Jean-loup Gailly和Mark Adler。1992年10月31日第一次公开发布,版本号是0.1,目前的稳定版本是1.2.4。 Gzip主要用于Unix系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件原创 2012-07-27 18:55:16 · 8218 阅读 · 0 评论 -
Memcached的分布式算法-Consistent Hashing
memcached的分布式算法-Consistent Hashing前言:我们知道以往资料要放到 M 台服务器上,最简单的方法就是取余数 (hash_value % M) 然后放到对应的服务器上,那就是当添加或移除服务器时,缓存重组的代价相当巨大。添加服务器后,余数就会产生巨变,这样就无法获取与保存时相同的服务器, 从而影响缓存的命中率。下面这篇文章写的非常好,结合memcached的原创 2012-03-14 16:30:10 · 4232 阅读 · 2 评论 -
Facebook揭秘HipHop项目 PHP程序大提速
PHP使我们常用的一种脚本语言,其最大的特点就是编程效率高,能够支持产品的快速迭代,可与其他传统的编译语言相比,CPU和内存使用效率不高,但Facebook的HipHop项目的完成,预示着PHP语言将更加优化。http://wiki.github.com/facebook/hiphop-php/AD:原创 2012-03-27 18:52:37 · 3616 阅读 · 0 评论 -
Memcached 内存分配机制介绍
1. Slab Allocation机制:整理内存以便重复使用 最近的memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存。在该机制出现以前,内存的分配是通过对所有记录简单地进行malloc和free来进行的。但是,这种方式会导致内存碎片,加重操作系统内存管理器的负担,最坏的情况下,会导致操作系统比memcached进程本身还慢。Slab All原创 2012-03-14 16:19:21 · 7820 阅读 · 0 评论 -
Windows PHP 中 VC6 X86 和 VC9 X86 的区别及 Non Thread Safe 的意思
PHP5.3以后 For Windows 提供了四个版本VC9 x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 Non Thread Safe、VC6 x86 Thread Safe在 官网 左边栏有提示:Which version do I choose?If you are using PHP with Apach原创 2012-04-24 10:33:25 · 11706 阅读 · 0 评论 -
Apache运行机制剖析
Apache运行机制剖析:1. B/S交互过程浏览器(Browser)和服务器(Web Server)的交互过程: 1、 浏览器向服务器发出HTTP请求(Request)。2、 服务器收到浏览器的请求数据,经过分析处理,向浏览器输出响应数据(Response)。3、 浏览器收到服务器的响应数据,经过分析处理,将最终结果显示在浏览器中。原创 2012-03-26 15:28:19 · 30780 阅读 · 2 评论 -
PHP字符串的编码问题
大家都知道,不同字符编码,其在内存占用的字节数不一样。如ASCII编码字符占用1个字节,UTF-8编码的中文字符是3字节,GBK为2个字节。 PHP 也自带几种字符串截取函数,其中常用到的就是 substr 和 mb_substr。 使用substr截取中文字符时会出现乱码,这是因为substr是按字节来截取的。即UTF-8编码的中文,使用substr截取,只会截取1原创 2012-08-07 15:41:45 · 5996 阅读 · 0 评论 -
[转]PHP函数的实现原理及性能分析 .
作者:HDK (百度) 前言 在任何语言中,函数都是最基本的组成单元。对于php的函数,它具有哪些特点?函数调用是怎么实现的?php函数的性能如何,有什么使用建议?本文将从原理出发进行分析结合实际的性能测试尝试对这些问题进行回答,在了解实现的同时更好的编写php程序。同时也会对一些常见的php函数进行介绍。php函数的分类在php中,横向划分的话,函数分为两大类: user fun原创 2012-03-27 18:49:59 · 2523 阅读 · 0 评论 -
探究PHP底层
探究PHP底层1、PHP是什么?PHP 指的是我们从外面看到的一套完整的系统。这听起来有点糊涂,但其实并不复杂(PHP4 内部结构图)。从功能上来分:我们可以分为三部分:1、 解释器部分(Zend 以引擎),负责对输入代码的分析、翻译和执行;2、 功能性部分(PHP功能函数以及扩展),负责具体实现语言的各种功能(比如它的函数等等);3、 接口部分原创 2012-03-26 17:38:06 · 21078 阅读 · 3 评论 -
使用ext_skel和phpize构建php5扩展
首先声明:我们要构建的是扩展或者模块名为hello_module.该模块提供一个方法:hello_word.1、php环境的搭建我们一般使用源码包编译安装,而不是binary包安装。因为使用PHP的二进制分发包安装有些冒险,这些版本倾向于忽略./configure的两个重要选项,它们在开发过程中很便利:第一个--enable-debug。这个选项将把附加的符号信息编译进PH原创 2012-03-22 12:27:38 · 12627 阅读 · 1 评论 -
高性能Mysql主从架构的复制原理及配置详解
温习《高性能MySQL》的复制篇.1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的...原创 2012-03-06 07:46:32 · 240604 阅读 · 38 评论 -
socket/io(6)、PHP SOCKET编程
1. 预备知识 一直以来很少看到有多少人使用php的socket模块来做一些事情,大概大家都把它定位在脚本语言的范畴内吧,但是其实php的socket模块可以做很多事情,包括做ftplist,http post提交,smtp提交,组包并进行特殊报文的交互(如smpp协议),whois查询。这些都是比较常见的查询。特别是php的socket扩展库可以做的事情简直不会比c差原创 2012-04-11 10:55:08 · 86783 阅读 · 27 评论 -
PHP编程注意事项
1、php隐性的三元操作符(?:)优先级问题:例1:$person = $who or $person = "laruence";//实际上是等同于:$person = empty($who)? "laruence" : $who; 例2$arr = array(1=>1,3=>3);$i = 2;$a = ’test‘ . isset($arr[$i]) ?原创 2013-02-22 13:13:41 · 5985 阅读 · 1 评论 -
TIME_WAIT引起Cannot assign requested address报错
主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络中消失。MSL在RFC 1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒,因而,TIME_WAIT状态一般维持在1-4分钟。 TIME_WA原创 2013-08-25 13:37:12 · 28843 阅读 · 0 评论 -
正则表达式详解
前言正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。 1. 引子 目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以原创 2012-11-30 17:39:53 · 11374 阅读 · 0 评论 -
PHP高效率写法(详解原因)
1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。 当然了,这个测试方法需要在十万级以上次执行,效果才明显。 其实静态方法和非静态方法的效率主要区别在内存:静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例,通过实例调用方法,静态速度很快,但是多了会占内存原创 2012-03-19 09:29:27 · 26258 阅读 · 8 评论 -
PHP错误异常处理详解
PHP异常处理详解 异常处理(又称为错误处理)功能提供了处理程序运行时出现的错误或异常情况的方法。 异常处理通常是防止未知错误产生所采取的处理措施。异常处理的好处是你不用再绞尽脑汁去考虑各种错误,这为处理某一类错误提供了一个很有效的方法,使编程效率大大提高。当异常被触发时,通常会发生: 当前代码状态被保存 代码执行被切换到预定义的原创 2012-04-16 12:56:36 · 49874 阅读 · 2 评论 -
lamp安装配置详细过程(把以前的笔记贴上来)
准备;首先进入/usr/local/目录#cd /usr/local删除所有安装过的php mysql apache 以及libxml首先查看目前 /usr/local目录下面的内容#ls –l如果看到php5 php apache2 apache mysql mysql5 libxml libxml2字样的目录都将其删除具体命令如下#rm –rf php5 删除原创 2012-02-29 15:16:59 · 7752 阅读 · 0 评论 -
Apc缓存Opcode
1、PHP执行PHP的运行阶段也分成三个阶段:Parse。语法分析阶段。Compile。编译产出opcode中间码。Execute。运行,动态运行进行输出。 由于PHP是个解释型语言执行的时候先得把程序读进来,然后由Zend引擎原创 2012-03-27 14:38:47 · 7158 阅读 · 2 评论 -
PHP中引用的详解(引用计数、写时拷贝)
PHP中引用的详解 huangguisu《PHP5中文手册》内容中"引用的解释"一文的摘要:1. PHP中引用的特性PHP中引用意味着用不同的名字访问同一个变量内容,引用不是C的指针(C语言中的指针里面存储的是变量的内容,在内存中存放的地址),是变量的另外一个别名或者映射。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Uni原创 2012-04-12 20:29:17 · 7011 阅读 · 1 评论 -
PHP运行模式
PHP运行模式有4钟:1)cgi 通用网关接口(Common Gateway Interface))2) fast-cgi 常驻 (long-live) 型的 CGI3) cli 命令行运行 (Command Line Interface)4)web模块模式 (apache等web服务器运行的模块模式)1. CGI(Common Gateway Interf原创 2012-03-26 10:43:36 · 24839 阅读 · 14 评论 -
深入理解php内核 编写扩展 II:参数、数组和ZVALs
原文:http://devzone.zend.com/article/1022-Extension-Writing-Part-II-Parameters-Arrays-and-ZVALsPart II: Parameters,Arrays, and ZVALs原文:http://devzone.zend.com/article/1023-Extension-Writing-Part原创 2012-03-21 11:25:26 · 5263 阅读 · 1 评论 -
PHP 6新增多项特性及改进
PHP下一个备受关注的6.0版本,已经进入snapshot阶段,不久后即将发布。PHP 6.0将包含很多新的特性、语法改进,会让面向对象编程更加简单,另外还有很多重要的改进,比如Unicode的核心支持,这将让PHP更适合全球范围支持和更加的健康发展。PHP是已经风靡全球的开源脚本语言,在数以万计的网站上运行着,PHP 6.0将完全向前兼容,同时增加许多令人激动的特性。1、更加原创 2012-03-19 10:05:37 · 2116 阅读 · 0 评论 -
PHP扩展代码结构详解
PHP扩展代码结构详解 :这个是继:使用ext_skel和phpize构建php5扩展 内容 (拆分出来)Zend_API:深入_PHP_内核:http://cn2.php.net/manual/zh/internals2.ze1.php我们使用ext_skel创建扩展 hello_module,该模块包含一个方法:hello_world。使用ext_skel 生成的代码都是原创 2012-03-31 10:49:49 · 9670 阅读 · 0 评论 -
PHP输入流php://input
PHP输入流php://input在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input对一php://input介绍,PHP官方手册文档有一段话对它进行了很明确地概述。“php://input allows you to read raw POST data. It原创 2012-04-01 09:55:52 · 3429 阅读 · 0 评论 -
PHP的反射机制
介绍:PHP5添加了一项新的功能:Reflection。这个功能使得phper可以reverse-engineer class, interface,function,method and extension。通过PHP代码,就可以得到某object的所有信息,并且可以和它交互。反射是什么?它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信原创 2012-03-15 15:56:54 · 57353 阅读 · 6 评论 -
PHP与Memcached服务器交互的分布式实现源码分析
前段时间,因为一个项目的关系,研究了php通过调用memcache和memcached PECL扩展库的接口存储到分布式缓存服务器的机制,在此做我根据他们各自的源码进行分析,希望能对这方面感兴趣的人有些帮助。本篇文章我会针对php和memcache扩展库的交互根据源码展开分析。PHP调用memcache的接口通常会是如下过程:<?php$mmc = new Memcache();$原创 2012-03-14 16:33:19 · 5334 阅读 · 0 评论 -
深入理解php内核 编写扩展_III- 资源
Part III: Resources原文:http://devzone.zend.com/article/1024-Extension-Writing-Part-III-Resources编写扩展_III- 资源介绍资源初始化资源接收资源作为函数参数销毁资源强制销毁资源持久资源查找现存的持久资源核对(代码)完整性总结3.原创 2012-03-21 11:32:14 · 5029 阅读 · 0 评论 -
深入理解php内核 编写扩展 I:介绍PHP和Zend
内容:编写扩展I - PHP和Zend起步原文:http://devzone.zend.com/public/view/tag/ExtensionPart I: Introduction to PHP and Zendhttp://devzone.zend.com/article/1021-Extension-Writing-Part-I-Introduction-to-PHP-原创 2012-03-21 11:15:17 · 6036 阅读 · 1 评论 -
PHP的类自动加载机制
PHP的类自动加载机制 在PHP开发过程中,如果希望从外部引入一个class,通常会使用include和require方法,去把定义这个class的文件包含进来。这个在小规模开发的时候,没什么大问题。但在大型的开发项目中,这么做会产生大量的require或者include方法调用,这样不因降低效率,而且使得代码难以维护,况且require_once的代价很大。在PHP5之前,各个PH原创 2012-04-16 10:21:57 · 36647 阅读 · 6 评论 -
php的serialize序列化和json性能测试
最近需要对大数组做存储,需要在serialize序列化和json之间做了选择。因此需要做了性能测试。在php5.2之前对数组存储的时候,大都使用serialize系列化。php5.2之后,开始内置了 JSON 的支持。在网上看到有些资料说:json_encode和json_decode比内置的serialize和unserialize函数要高效。耳闻不如眼见,眼见不一定为实。那就用实际数据原创 2012-06-11 11:08:45 · 28753 阅读 · 4 评论 -
gdb调式程序
gdb调式程序最近要调试PHP源代码,使用工具GDB.1. GDB简介GDB是Linux/Unix下一个GNU调试程序,是用来调试C与C++程序的强力调试器。能够让用户在程序运行时观察程序的内部结构和内存的使用情况。作用:1)按照自定义的方式启动运行需要调试的程序。2)可以使用指定位置和条件表达式的方式来设置断点。3)程序暂停时的值的监视。原创 2012-04-09 18:43:56 · 4461 阅读 · 0 评论 -
深入理解PHP的引用(References in PHP)
深入理解PHP的引用(References in PHP) huangguisu为了深入理解PHP的引用,找到一篇老外的东西: http://derickrethans.nl/talks/phparch-php-variables-article很多内容还是直接看英文版比较好,翻译过来有时候词不达意。基础知识php在zend里面存储的变量,PHP中每个变量都有对应的 zval原创 2012-04-13 19:23:19 · 5535 阅读 · 0 评论 -
Memcache存储大数据的问题
Memcache存储大数据的问题 huangguisu Memcached存储单个item最大数据是在1MB内,如果数据超过1M,存取set和get是都是返回false,而且引起性能的问题。我们之前对排行榜的数据进行缓存,由于排行榜在我们所有sql select查询里面占了30%,而且我们排行榜每小时更新一次,所以必须对数据做缓存。为了清除缓存方便,把所有的用户的数据放在原创 2011-01-25 18:16:00 · 42647 阅读 · 4 评论 -
PHP5.4的变化关注---What has changed in PHP 5.4.x
What has changed in PHP 5.4.xMost improvements in PHP 5.4.x have no impact on existing code. There are a few incompatibilities and new features that should be considered, and code should be原创 2012-04-24 11:30:13 · 6659 阅读 · 0 评论 -
PHP数组实际占用内存大小的分析
我们在前面的php高效写法提到,尽量不要复制变量,特别是数组。一般来说,PHP数组的内存利用率只有 1/10, 也就是说,一个在C语言里面100M 内存的数组,在PHP里面就要1G。下面我们可以粗略的估算PHP数组占用内存的大小,首先我们测试1000个元素的整数占用的内存:<?php echo memory_get_usage() , ''; $start = memory_get原创 2012-03-21 10:49:43 · 32471 阅读 · 2 评论 -
PHP安全模式详解(PHP5.4安全模式将消失)
PHP安全模式详解 (huangguisu)这个是之前的笔记,随笔贴上而已。PHP安全模式在5.4的时候已经不再支持了。查看官网:Safe mode is no longer supported. Any applications that rely on safe mode may need adjustment, in terms of security.1. 安全原创 2012-04-16 16:11:40 · 23742 阅读 · 4 评论 -
深入理解php底层:php生命周期
1、PHP的运行模式: PHP两种运行模式是WEB模式、CLI模式。无论哪种模式,PHP工作原理都是一样的,作为一种SAPI运行。1、当我们在终端敲入php这个命令的时候,它使用的是CLI。它就像一个web服务器一样来支持php完成这个请求,请求完成后再重新把控制权交给终端。2、当使用Apache或者别web服务器作为宿主时,当一个请求到来时,PHP会来支持完原创 2012-03-21 13:21:14 · 40001 阅读 · 9 评论