十一月枫吹

  • 增大字号
  • 缺省字号
  • 减小字号
>> 技术札记

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 ) 阅读全文...
 

zend studio7.1.2 无提示解决方法

E-mail 打印 PDF

方法很简单

在zendstudio的安装目录下搜索org.eclipse.dltk.ui.prefs这个文件

删除掉

重新启动zendstudio就ok了

 

Linux apache编译安装

E-mail 打印 PDF

1.下载httpd-2.2.15.tar.gz

[root@test-AS4 ~]# mkdir -P /usr/local/src/apache/    #创建源包存放的目录

[root@test-AS4 ~]# cd /usr/local/src/apache/           #把httpd-2.2.15.tar.gz放入此目录下

[root@test-AS4 apache]# tar zxvf httpd-2.2.15.tar.gz       #解压文件会生成httpd-2.2.15目录

[root@test-AS4 apache]# ll
total 6464
drwxr-xr-x  11 angel angel    4096 Mar 10 07:42 httpd-2.2.15
-rw-r--r--   1 root  root  6593633 Mar 10  2010 httpd-2.2.15.tar.gz

[root@test-AS4 httpd-2.2.15]# cd httpd-2.2.15

[root@test-AS4 httpd-2.2.15]# ./configure --prefix=/usr/local/apache-2.2.15  --enable-so --enable-mods-shared=most --with-mpm=worker

[root@test-AS4 httpd-2.2.15]# make

[root@test-AS4 httpd-2.2.15]# make install

阅读全文...
 

centos yum 中国镜像

E-mail 打印 PDF

更改yum镜像站点为中国站点地址,推荐http://centos.ustc.edu.cn/centos/。(中 国科技大学)

    修改/etc/yum.repos.d/CentOS-Base.repo
    如下:

# CentOS-Base.repo
#
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

最后更新 ( 周二, 2010年 05月 25日 14:23 ) 阅读全文...
 

面向 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 的熟悉程度)进行对模式、数据关系、表等等的处理。

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

阅读全文...
 


页 1 总共 9