【发布时间】:2025-11-24 18:25:02
【问题描述】:
一个非常奇怪的行为,在网上没有找到任何东西。 Apache 版本 2.4 在 Windows (EasyPHP) 上运行,php 5.6 当前稳定
浏览器请求一个带有帖子数据的站点 (index.php?page=kdkarte_logfiles)。
答案来自网络服务器,但在一些块(来自 Apache 的分块输出)之后结束。
Firefox 请求另一个文件 (jquery.min.js),丢失的块在第二个请求的响应中。
所以在 Firefox 中(也在 ie 上测试过)它看起来像这样(不是整个页面;-)):
index.php?page=kdkarte_logfiles
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>AE-Liste v3.0</title>
<script src="javascript/jquery/jquery.min.js"></script>
<head><body>.... SOME TEXT .... Query:
<select name='query'>
<option value='all' selected>Alle</option> <- EOF ->
下一个请求:
jquery.min.js:
204c
<option value='1'>plus_service2</option><option value='4'>bremsscheibe</option><option value='5'>test</option><option value='6'>abbuchung</option><option value='7'>TESTAP47392000</option><option value='8'>test2</option><option value='9'>Hauptuntersuchung</option></select>
<input type='submit'></form></th></tr>
<tr><th>ID</th><th>GPNR</th><th>Name</th>..... MORE TEXT ....
0
HTTP/1.1 200 OK
Date: Mon, 20 Mar 2017 13:35:29 GMT
Server: Apache/2.4.7 (Win32) PHP/5.6.30
Last-Modified: Wed, 18 Nov 2015 21:26:34 GMT
ETag: "1497f-524d74bedd680"
Accept-Ranges: bytes
Content-Length: 84351
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: application/javascript
... jquery code ...
在第二个响应中,您可以看到块之间的十六进制(204c、203b 等)
看看 Wireshark,Chunks 正在正确地重新组装。 试图关闭 PHP 输出缓冲、任何 gzip 压缩等都无济于事:-/
下一条信息:break 上的代码如下所示:
</select>
Query:
<select name='query'>
<option value='all' selected>Alle</option>
<?php
$querys = query("local", true, "SELECT DISTINCT id, name FROM kdkarte_query");
foreach ($querys as $query) {
echo "<option value='".$query['id']."'>".$query['name']."</option>";
}
?>
</select>
所以如果调用 php 就会发生中断(虽然不是第一次,但第一次有一些 SQL 交互)
它仅在稍后执行更大的 SQL 查询时才会发生,所以这可能是 php->mysql 的问题:/,如果结果只有几行(假设在 15 行以下),它会正确完成。在查询结果大于 1500 的其他页面上 -> 没问题 :(
块的大小大多为 8-9k 字节
顺便说一句。看了@apache 错误日志,什么都没有。 用 xdebug 做了一个跟踪,似乎没问题:/
(我应该问 cloudflare 的人吗?!;-))
感谢大家对此的任何帮助或想法!
【问题讨论】:
标签: php mysql windows apache chunks