Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Apache和MySQL进行php输出缓冲的性能影响_Php_Mysql_Performance_Apache - Fatal编程技术网

使用Apache和MySQL进行php输出缓冲的性能影响

使用Apache和MySQL进行php输出缓冲的性能影响,php,mysql,performance,apache,Php,Mysql,Performance,Apache,我对php缓冲的工作原理有点困惑 假设您在php.ini中有一个php页面foo.php和output\u buffering=4096,Apache收到对foo.php的get请求foo.php开始执行,一旦4096字节就绪,它们就被发送到Apache。Apache开始将这些4096字节发送到客户端 我不明白的是:当有一个令人讨厌的跟踪器调用、一个javascript或一个发送到浏览器的图像时会发生什么。浏览器挂断了,并且有一段时间没有与Apache进行回复,只是挂断了。Apache并没有发布

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

假设您在
php.ini
中有一个php页面
foo.php
output\u buffering=4096
,Apache收到对
foo.php
的get请求
foo.php
开始执行,一旦4096字节就绪,它们就被发送到Apache。Apache开始将这些4096字节发送到客户端


我不明白的是:当有一个令人讨厌的跟踪器调用、一个javascript或一个发送到浏览器的图像时会发生什么。浏览器挂断了,并且有一段时间没有与Apache进行回复,只是挂断了。Apache并没有发布MySQL线程,它显示为一个“睡眠者”。这是正确的还是我在这里完全不正确?

从服务器下载HTML数据时,浏览器不会“挂起”。它会继续下载整个页面,即使它在实际显示任何页面之前等待JavaScript文件出现


当然,如果浏览器/服务器连接因某种原因中断,您可以让Apache在连接超时之前等待ACK,但这不是通常的情况。

您完全偏离了基准:)

当出现令人讨厌的跟踪器呼叫时会发生什么 javascript或发送到浏览器的图像

这不会对服务器端造成任何影响

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

  • 编译所需的PHP文件以选择代码(除非缓存是其中之一)
  • 执行PHP opt代码
  • 将PHP opt代码的字符串结果返回到浏览器
  • 您所说的缓冲发生在步骤2和步骤3之间。那么,让我们来看看你的场景

  • 请求一个PHP URL
  • opt代码已编译
  • PHP执行开始并开始返回html字符串
  • 创建了一个带有缓慢加载img标记的字符串
    • PHP继续向apache提供输出
    • 对图像(或javascript代码,或其他任何内容)发出单独的http请求
  • 在这里,单独的请求是无效的。PHP和Apache所做的只是将HTML返回到浏览器。此HTML可能会生成一个img或javasript标记,该标记将回调到同一web服务器,但这些请求将与为现有页面生成HTML的请求分开处理