当前位置:首页 » 编程语言 » php解释器

php解释器

发布时间: 2025-05-27 05:01:51

1. php-fpm比php成为apache模块好在哪

概述
写这篇文章的是因为今天要Ubuntu下搭建LNMP环境,Nginx使用的是PHP-FPM,所以对Web服务器与PHP解释器的交互方式做了个整理。
众所周知,PHP是跨平台、跨服务器的语言,这也是它如此流行的原因之一。但是,很少有人知道PHP解释器可以以不同的方式运行在Web服务器中。PHP最常用的方式是以模块的方式(mod_php)运行在Apache中,也是Apache运行PHP的默认方式。但是在Nginx中,Nginx又使用的是PHP-FPM。
这篇文章就对这些概念做个介绍,如有不对的地方,请多多批评指教。
什么是PHP处理器(PHP handlers)?
首先需要记住的是,任何一种Web服务器(Apache、Nginx等)都是被设计成向用户发送html、图片等静态资源的,Web服务器自身并不能解释任何动态脚本(PHP、Python等)。PHP处理器就是用来解释Web应用中的PHP代码,并将它解释为HTML或其他静态资源,然后将解析的结果传给Web服务器,最后再由Web服务器发送给用户。大多数的Web服务器都不能解析PHP代码,因此它需要一个能解析PHP代码的程序,这就是PHP处理器。
mod_php
首先,来看一下以Apache模块方式运行PHP。mod_php现在在Linux各版本的软件仓库里都有,因此很容易被安装。
当PHP以模块的方式运行在Apache中时,PHP解释器被“内嵌”在Apache的进程里。Apache不会调用任何外部的PHP进程,因此这种方式使Apache与PHP能更好的通信。但是,当以这种方式运行PHP的时候,哪怕Apache提供的仅仅是静态的资源(如HTML),Apache的每个子进程也都会载入 mod_php,导致了比正常情况下更多的内存开销。
以这种方式运行的另一个缺点是,它仅能与Apache一起配合工作。另外,在小型的VPS和大型的网站中,这种方式也不合适,因为大型网站可能有很多静态资源,而这些静态资源是不需要PHP程序解释的。
优点:
1.易于安装和更新
2.容配置
缺点:
1.仅能与Apache一起工作
2.增加了Apache子进程内存开销
3.当更改php.ini文件后,需要重启Apache
FastCGI
FastCGI是交互程序与Web服务器通用的协议接口,是早期CGI(Common Gateway Interface)的一个变种。相对于CGI来说,FastCGI减少了和Web服务器交互的开销,同时一次可以处理更多的请求。
Apache可以以mod_fcgid的形式使用FastCGI。其他Web服务器,如lighttpd, nginx, Cherokee,甚至微软的IIS也都能使用FastCGI。使用FastCGI,可以同时设置多个版本的PHP,这在某些情况下非常有用。
FastCGI还利用suexec来支持不同的用户用自己的PHP的实例。这个特性对于在共享环境下提高安全性尤其重要。FastCGI在保证性能的同时,也减少了Web服务器的内存开销。
优点:
1.兼容多数Web服务器
2.比mod_php占内存小
3.更多的配置项,包括多版本PHP和suexec
缺点
1.配置复杂
2.不被大家所熟知
PHP-FPM(FastCGI Process Manager)
PHP-FPM是Web服务器使用PHP的一种最新方式,也是PHP FastCGI的另外一种实现。PHP-FPM对于运行在小型VPS和多服务器上的Web应用非常应用。同时,它也可以被兼容FastCGI的任何Web服务器所使用。
PHP-FPM使管理员能够优雅地停止和启动PHP工作进程而不丢失任何查询。这允许我们逐步更新配置和二进制,而不会损失任何查询。它还允许我们在发生任何意外破坏的情况下,紧急重启进程。
优点:
1.兼容多数Web服务器
2.比mod_php占内存小
3.更多的配置项,包括多版本PHP和suexec
缺点
1.配置复杂
2.不被大家所熟知
补充:Apache运行PHP的四种方式
mod_php (DSO,Dynamic Shared Object)
CGI
suPHP
FastCGI
总结
内容相对抽象,理解的不深,记录下留作以后参考~:)

2. php怎么运行

PHP代码通常在服务器端运行,通过Web服务器软件(如Apache、Nginx等)与PHP解释器(如PHP-FPM、PHP-CGI等)的结合来执行。

PHP是一种脚本语言,特别适用于Web开发。与编译型语言不同,PHP是解释型语言,这意味着它不需要预先编译成可执行文件,而是由解释器在运行时逐行读取并执行代码。为了运行PHP代码,需要几个关键组件的协同工作。

首先,你需要一个Web服务器软件,如Apache或Nginx。这些服务器软件负责处理HTTP请求,并返回相应的响应。当请求的资源是一个PHP文件时,Web服务器会将这个请求转发给PHP解释器处理。

其次,PHP解释器是执行PHP代码的关键。PHP解释器可以是以模块形式集成在Web服务器中,如Apache的mod_php模块,也可以是独立的进程,如PHP-FPM(FastCGI Process Manager)或PHP-CGI。这些解释器接收来自Web服务器的PHP代码,对其进行解析和执行,并将结果返回给Web服务器。

举个例子,当你在浏览器中访问一个以.php结尾的URL时,Web服务器会接收到这个请求。如果服务器配置正确,它会识别出这是一个PHP文件,并将请求转发给PHP解释器。解释器随后读取该文件中的PHP代码,逐行执行,并根据代码生成相应的HTML输出。这个HTML输出随后被返回给Web服务器,再由服务器发送回你的浏览器。这样,你就能看到由PHP动态生成的网页内容了。

总的来说,PHP的运行依赖于Web服务器软件和PHP解释器的紧密配合。通过正确配置这两者,你就能顺利地在服务器端执行PHP代码,从而创建出动态、交互式的Web应用。

3. PHP CLI模式开发详解

PHP CLI模式开发详解

PHP CLI模式是一种无需Web服务器的运行方式,适用于脚本自动化、命令行工具开发等多种场合。以下是PHP CLI模式开发的详细解析:

  1. 运行方式

    • 使用脚本路径调用PHP CLI解释器
      • 通过命令行指定PHP文件的路径来运行脚本,如php /path/to/yourFile.php。
      • 此方法需要明确知道PHP解释器的安装位置。
    • 为文件设置可执行权限
      • 在UNIX/Linux环境中,使用chmod +x命令将PHP文件设置为可执行。
      • 在脚本头部添加#! /usr/bin/php声明,然后可以直接在命令行执行该脚本。
  2. 命令行参数处理

    • 在CLI模式下,可以通过$_SERVER['argv']和$_SERVER['argc']全局变量来获取命令行参数。
    • $_SERVER['argv']是一个数组,包含传递给脚本的参数列表。
    • $_SERVER['argc']是一个整数,表示传递给脚本的参数个数。
  3. 输入输出处理

    • CLI模式遵循UNIX系统设计,使用STDIN、STDOUT和STDERR三个文件句柄进行输入输出。
    • STDIN用于接收用户输入。
    • STDOUT用于向屏幕输出信息,也可以重定向到文件。
    • STDERR用于输出错误信息,同样可以重定向。
  4. 后台运行与日志记录

    • 使用nohup命令可以在后台运行CLI脚本,即使退出当前会话,脚本也会持续运行。
    • 通过将脚本输出重定向到文件,可以保存脚本的执行结果。
    • 使用tail命令可以实时查看日志文件的内容。
  5. 应用场景示例

    • 可以编写一个持续生成静态HTML文件的脚本,如cliPHP3.php,利用CLI模式的强大功能实现自动化生成和更新网页内容。
  6. 学习资源

    • 更多关于PHP CLI模式开发的知识和资源,可以通过关注公众号“PHP开源社区”或访问相关链接获取。这些资源包括进阶文档、架构视频、精彩文章等,有助于深入了解和掌握PHP CLI模式的开发技巧。
热点内容
随机启动脚本 发布:2025-07-05 16:10:30 浏览:534
微博数据库设计 发布:2025-07-05 15:30:55 浏览:30
linux485 发布:2025-07-05 14:38:28 浏览:310
php用的软件 发布:2025-07-05 14:06:22 浏览:760
没有权限访问计算机 发布:2025-07-05 13:29:11 浏览:436
javaweb开发教程视频教程 发布:2025-07-05 13:24:41 浏览:722
康师傅控流脚本破解 发布:2025-07-05 13:17:27 浏览:246
java的开发流程 发布:2025-07-05 12:45:11 浏览:696
怎么看内存卡配置 发布:2025-07-05 12:29:19 浏览:288
访问学者英文个人简历 发布:2025-07-05 12:29:17 浏览:837