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多字节的支持,国际化使用的时候,所有一般要安装

[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文件一般只包含指令,不包含数据,数据是以另外一种机制实现交互

数据是以数据库的存取实现,达到快速查找及响应

你可能感兴趣的:(apache,PHP,index.php)