十一月枫吹

  • 增大字号
  • 缺省字号
  • 减小字号

PHP函数的实现原理及性能分析

E-mail 打印 PDF

文章来源:http://topic.csdn.net/u/20100628/14/4ba08dfd-9418-4835-8601-1af2acfbb639.htmlhttp://topic.csdn.net/u/20100628/15/cfc89a39-223f-4765-95d5-1cb75ac9a652.htmlhttp://topic.csdn.net/u/20100628/15/12a4a3f2-5c78-4a19-a66b-d5678af46bb7.html 

在任何语言中,函数都是最基本的组成单元。对于php的函数,它具有哪些特点?函数调用是怎么实现的?php函数的性能如何,有什么使用建议?将从原理出发进行分析结合实际的性能测试尝试对这些问题进行回答,在了解实现的同时更好的编写php程序。同时也会对一些常见的php函数进行介绍。
  这篇帖子先对PHP的函数分类和实现分析一下:
  php函数的分类
在php中,横向划分的话,函数分为两大类: user function(内置函数) 和internal function(内置函数)。前者就是用户在程序中自定义的一些函数和方法,后者则是php本身提供的各类库函数(比如sprintf、array_push等)。用户也可以通过扩展的方法来编写库函数,这个将在后面介绍。对于user function,又可以细分为function(函数)和method(类方法),本文中将就这三种函数分别进行分析和测试。 
  php函数的实现 
  一个php函数最终是如何执行,这个流程是怎么样的呢? 
  php实现了一个典型的动态语言执行过程:拿到一段代码后,经过词法解析、语法解析等阶段后,源程序会被翻译成一个个指令(opcodes),然后ZEND虚拟机顺次执行这些指令完成操作。Php本身是用c实现的,因此最终调用的也都是c的函数,实际上,我们可以把php看做是一个c开发的软件。
通过上面描述不难看出,php中函数的执行也是被翻译成了opcodes来调用,每次函数调用实际上是执行了一条或多条指令。 
对于每一个函数,zend都通过以下的数据结构来描述 

最后更新 ( 周二, 2010年 07月 06日 14:55 ) 阅读全文...
 

面向 PHP 开发人员的 CouchDB 基础知识

E-mail 打印 PDF

Thomas Myer, 负责人, Triple Dog Dare Media
Thomas Myer 是一名顾问、作家和讲师,居住在 Austin。他创立了 Triple Dog Dare Media 并在 Twitter 上以 @myerman 撰写博文。
简介: 作者 Thomas Myer 向资深 PHP 开发人员讲述如何把 CouchDB 添加到他们的技术工具箱中。

如果您是位典型的 PHP 开发人员,就不难通过以往的项目得到这样一个结论:在多数(如果不是全部)情况下,为了进行动态数据处理,您都会让 PHP 与数据库后端进行对话;而在这些实例中,99% 的情况下使用的都是 MySQL。

如今,使用关系型数据库无可厚非。如果所处理的数据结构复杂,并具有多种关系,那么这么做是很合理的。您可以顺利地(或是不太顺利地,取决于您对 SQL 的熟悉程度)进行对模式、数据关系、表等等的处理。

不过,您所从事的项目有时也会让您不经意间心生疑问:“为什么我要做所有这些工作?” 您所从事的这个项目包含了一些简单的或难以预测的数据 — 在不同的日子获得的数据字段可能不同甚至事务之间的数据字段都不尽相同。若是创建一个模式来预测将会出现什么数据字段,结果很可能会得到内含大量空字段的表或大量的映射表。

阅读全文...
 

MongoDB:PHP开发者应该知道的关于 MongoDB 的 5 件事儿

E-mail 打印 PDF
原文:http://technosophos.com/content/mongodb-5-things-every-php-developer-should-know-about-mongodb

感觉这篇文章说了一些 MongoDB 的要点,适合 MongoDB 扫盲使用。所以翻译出来,造福于民。虽然文章是针对 PHP 开发者写的,但实际上 python、ruby 或者其他 web 开发人员也可借鉴。

—————————-这里是译文分隔线—————————–

2010年将被记住,因为这一年 SQL 死了;这一年关系数据库从一线退下;这一年开发人员发现他们没必要为了持久化数据,将每个对象转化为表格结构。

2010年是文档数据库的一年。尽管一直在稳步发展势头,通过过去七年多的发展,现在有各种稳定的文档数据库——从基于亚马逊和谷歌的云,到各种开放源码工具,尤其是 CouchDBMongoDB

那么,MongoDB 是什么?这里的五件事是每个 PHP 开发人员应该知道的:
1、MongoDB 是一个独立的服务器
2、它是基于文档的,而不是基于表格的
3、它是非结构化的
4、不必去学习另一种查询语言
5、它具有强大的 PHP 支持
最后更新 ( 周五, 2010年 05月 07日 11:47 ) 阅读全文...
 

字符编码详解及由来(UNICODE,UTF-8,GBK)

E-mail 打印 PDF

因为看到的文章也是转来的,所以就不表明出处了。


很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节”。

再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机”。

开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。

他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上00×10, 终端就换行,遇上0×07, 终端就向人们嘟嘟叫,例如遇上0×1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0×20以下的字节状态称为”控制码”.

他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了。大家 看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的”Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。

阅读全文...
 

为什么要用非关系数据库?

E-mail 打印 PDF

原文地址:http://robbin.javaeye.com/blog/524977

关键字: nosql 随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付 web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:

1、High performance - 对数据库高并发读写的需求
web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往 往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。其实对于普通的 BBS网站,往往也存在对高并发写请求的需求,例如像JavaEye网站的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,因此这是一个相当 普遍的需求。

2、Huge Storage - 对海量数据的高效率存储和访问的需求
类似Facebook,twitter,Friendfeed这样的SNS网站,每天用户产生海量的用户动态,以Friendfeed为例,一个 月就达到了2.5亿条用户动态,对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。再例如大型web网站 的用户登录系统,例如腾讯,盛大,动辄数以亿计的帐号,关系数据库也很难应付。
最后更新 ( 周三, 2010年 05月 05日 17:15 ) 阅读全文...
 


页 1 总共 2