CGI:是一种调用执行环境,来执行二进制程序并将格式转化为html能识别的一种协议
FastCGI:是apache服务器充当客户端,php不再是一个解释器,而是一个服务器, 也类似apache的 prefork工作模型,称为fastCGI
编程语言
1、静态语言:编译型语言
c, C++ JAVA
2、动态语言:解释型语言
shell, perl, python
一、php的OPCODE
Opcode是一种PHP脚本编译后的中间语言,就像JAVA的ByteCode,或者.NET的MSL。PHP执行php脚本代码一般会经过如下4个步骤(确切的来说,应该是php的语言引擎Zend)
1、Scanning(Lexing)--将PHP代码转换为语言片段(Tokens),也可以解理为词法分析
2、Parsing--将Tokens转换成简单而有意义的表达式,也可以理解为语法分析
3、Compilation--将表达式编译成opcodes,也可以解理为编译
4、Execution--顺序执行Opcodes,每次一条,从而实现PHP脚本的功能
注:PHP只是在第一次运行的时候需要编译,以后都不需要编译,故出现第一次访问比较慢。opcode不是存放在有磁盘上的, 而是放在内存中的
二、PHP的加速器
将每个进程编译好的Opcode文件放进一个缓存中,所有进程都可以访问这个缓存,从而提高访问速度
加速器有如下版本,且都是开源的:
1、APC(Alternative PHP Cache)
2、eAccelerator
3、XCache
4、Zend Optimizer和Zend Guard Loader (是闭源但是免费的)
5、NuSphere PhpExpress
目录比较流得第三种加速器,且被大量用于生产环境
三、PHP源码目录结构
1、build:主要放置一些跟源码编译相关的文件,比如开始构建之前的buildconf脚本及一此环境脚本
2、ext:官方的扩展目录,包括大多数PHP的函数定义和实现
3、main:PHP最为核心的文件,是实现PHP基础设施,和Zend引擎不一样,Zend主要实现语言最核 心的语言运行环境
4、Zend:Zend引擎,比如脚本的记法语法解释,opcode的执行及扩展机制的实现等
5、pear:PHP扩展与应用仓库,包含Pear的核心文件
6、sapi:包含了各种服务器抽象层的代码,例如apache的mod_php ,cgi,fastcgi以及fpm等接口
7、TSRM:PHP的线程安全,是构建在TSRM库之上的
8、tests:PHP的测试脚本集合
9、win32:这个目录主要包括windows平台相关的一些实现,比如sokcet的实现
MVC:嵌入式web开发语言。模块,视图,控制器,将使用视图调用执行结果,返回给apache服务器
在PHP5以后的版本中, 将FastCGI做成了一个模块,模块名称为:FPM
apache+PHP的搭建一般为:
CGI
Module
FastCGI(需配置PHP服务器, 编译PHP的FPM功能)
只处理静态内容,Nginx要比Apache性能要好很多
Nginx+fpm
PHP安装
php-mbstring.x86_64 :(most byte)PHP多字节的支持,国际化使用的时候,所有一般要安装
[root@localhost httpd]# yum install php php-mbstring [root@localhost httpd]# rpm -ql php /etc/httpd/conf.d/php.conf /usr/lib64/httpd/modules/libphp5.so /var/lib/php/session /var/www/icons/php.gif
php.conf配置文件:
# # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. # <IfModule prefork.c> #定义apache不同的工作模型,指代不同的php模块 LoadModule php5_module modules/libphp5.so </IfModule> <IfModule worker.c> LoadModule php5_module modules/libphp5-zts.so </IfModule> # # Cause the PHP interpreter to handle files with a .php extension. # AddHandler php5-script .php #定义的一个处理器,访问.php的以php5-script来运行 AddType text/html .php #定义类型,访问.php的文件,他都把他当作一个txt/html文档 # # Add index.php to the list of files that will be served as directory # indexes. # DirectoryIndex index.php #定义php默认主页,index.php # # Uncomment the following line to allow PHP to pretty-print .phps # files as PHP source code: # #AddType application/x-httpd-php-source .phps
index.php语法:
[root@localhost a.com]# vim index.php #网站默认php网页文件 <title>A</title> <h1>www.a.com</h1> <?php #封装开头以<?php phpinfo(); #调用的一个PHP内置函数,以;号结尾 ?> #以?>
index.php文件一般只包含指令,不包含数据,数据是以另外一种机制实现交互
数据是以数据库的存取实现,达到快速查找及响应