benzhou 发表于 2018-11-21 10:36:54

php与apache

  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多字节的支持,国际化使用的时候,所有一般要安装
# yum install php php-mbstring
# 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.
#
   #定义apache不同的工作模型,指代不同的php模块
LoadModule php5_module modules/libphp5.so


LoadModule php5_module modules/libphp5-zts.so

#
# 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语法:

# vim index.php#网站默认php网页文件
A
www.a.com
      #以?>  index.php文件一般只包含指令,不包含数据,数据是以另外一种机制实现交互
  数据是以数据库的存取实现,达到快速查找及响应



页: [1]
查看完整版本: php与apache