php - PHP 是否在每次请求时都读取所需的脚本?

标签 php

PHP 在处理新请求时是否每次都读取所需的脚本?

你能解释一下PHP在处理单个请求时执行了哪些磁盘IO操作吗

如果 PHP 是 Apache 模块或 PHP-fpm,会发生什么变化

最佳答案

是的。

想象一下:

script_a.php

<?php
$foo = 'bar';
$bar = 'foo';
?>

script_b.php

<?php
require_once 'script_a.php';
echo $foo . ' ' . $bar;
?>

在运行时,script_b.php 将实际包含:

<?php
$foo = 'bar';
$bar = 'foo';
echo $foo . ' ' . $bar;
?>

因此,每次处理新请求时它都会读取脚本(或多个脚本)。这就是为什么中高负载的服务器使用像 APC 这样的操作码缓存的原因。或 eAccelerator .

它们所做的是在内存中缓存整个脚本(已处理 requires/includes),因此不必将其处理为下一个请求的字节码,而是可以直接执行。这可以转化为显着的性能提升,因为没有磁盘 I/O,并且 Zend 引擎不必再次将脚本转换为字节码。

编辑:

Does something change if PHP is an Apache module or PHP-fpm

不,至少不是 PHP 处理包含/要求的方式。

希望这对您有所帮助。

关于php - PHP 是否在每次请求时都读取所需的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14292223/

相关文章:

php - 如何在CodeIgniter中为403禁止的错误设置自定义页面

javascript - 我无法选择搜索项目

php - git 子模块 svn 外部

php - 从 mysql json 数据中剪切文本

php - PHP、MySQL 中的数据阻塞

php - 从另一个类捕获抛出异常

php - Symfony2 限制最终用户只上传 csv 文件

php - 有没有办法用附加参数测试 Paypal IPN 协议(protocol)?

javascript - 如何为 ImageMapster 创建 PHP 生成的工具提示?

php - REST API - 具有多个错误的 HTTP 状态代码