gpt4 book ai didi

php - Apache 和 MySQL 的 php 输出缓冲的性能影响

转载 作者:可可西里 更新时间:2023-11-01 07:29:32 24 4
gpt4 key购买 nike

我对 php 缓冲的工作原理有点困惑。

假设您在 php.ini 中有一个 php 页面 foo.phpoutput_buffering = 4096,Apache 收到一个获取请求foo.phpfoo.php 开始执行,一旦 4096 字节准备就绪,它们就会被发送到 Apache。 Apache 开始向客户端发送这 4096 个字节。

以下是我不明白的地方:当有一些讨厌的跟踪器标注、javascript 或图像被发送到浏览器时会发生什么。浏览器挂断了,有一段时间没有与 Apache 回复,暂停它。 Apache 没有发布 MySQL 线程,它显示为“ sleep 者”。这是正确的还是我在这里完全偏离了基地?

最佳答案

你完全偏离了基地:)

what happens when there's a some nasty tracker callout, a javascript or an image that was sent to the browser

这不会对服务器端产生任何影响。

通过 PHP 运行的每个请求都会

  1. 将所需的 PHP 文件编译为 opt-code(除非缓存是其中之一)
  2. 执行 PHP 选择代码
  3. 将PHP opt-code的字符串结果返回给浏览器

您所说的缓冲发生在第 2 步和第 3 步之间。因此,让我们假设您的场景。

  1. 已请求 PHP URL
  2. 编译opt-code
  3. PHP 执行开始并开始返回 html 字符串
  4. 创建了一个带有缓慢加载 img 标签的字符串
    • PHP 继续将输出提供给 apache
    • 对图像(或 javascript 代码,或其他任何内容)发出单独的 http 请求

单独的请求在这里是无能为力的。 PHP 和 Apache 所做的只是将 HTML 返回给浏览器。此 HTML 可能会生成一个 img 或 javasript 标记,这些标记将回调到同一网络服务器,但这些请求将与为现有页面生成 HTML 的请求分开处理。

关于php - Apache 和 MySQL 的 php 输出缓冲的性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/745595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com