【发布时间】:2014-02-28 03:41:21
【问题描述】:
我在共享主机环境中有一个长时间运行的脚本,它输出一堆 XML
有时(仅有时)我的输出中会出现一个随机的 GZIP 标头,并且输出将被终止。
例如
0000000: 3c44 4553 435f 4c4f 4e47 3e3c 215b 4344 <DESC_LONG><![CD
0000010: 4154 415b 1fc2 8b08 0000 0000 0000 03c3 ATA[............
0000020: b3c3 8b57 c388 c38c 2b28 2d51 48c3 8bc3 ...W....+(-QH...
0000030: 8c49 5528 2e48 4dc3 8e4c c38b 4c4d c391 .IU(.HM..L..LM..
0000040: c3a3 0200 c291 4464 c383 1900 0000 0d0a ......Dd........
或
0000000: 3c2f 5052 4f44 5543 543e 0d0a 1fc2 8b08 </PRODUCT>......
0000010: 0000 0000 0000 03c3 b3c3 8b57 c388 c38c ...........W....
0000020: 2b28 2d51 48c3 8bc3 8c49 5528 2e48 4dc3 +(-QH....IU(.HM.
0000030: 8e4c c38b 4c4d c391 c3a3 0200 c291 4464 .L..LM........Dd
0000040: c383 1900 0000 0d0a ........
或
0000000: 3c4d 4544 4941 5f55 524c 3e2f 696d 6167 <MEDIA_URL>/imag
0000010: 6573 2f69 6d70 6f72 7465 642f 7374 6f63 es/imported/stoc
0000020: 6b5f 7072 6f64 3235 3339 365f 696d 6167 k_prod25396_imag
0000030: 655f 3531 3737 3439 3436 302e 6a70 673c e_517749460.jpg<
0000040: 2f4d 4544 4941 5f55 1fc2 8b08 0000 0000 /MEDIA_U........
0000050: 0000 03c3 b3c3 8b57 c388 c38c 2b28 2d51 .......W....+(-Q
0000060: 48c3 8bc3 8c49 5528 2e48 4dc3 8e4c c38b H....IU(.HM..L..
0000070: 4c4d c391 c3a3 0200 c291 4464 c383 1900 LM........Dd....
0000080: 0000 0d0a ....
切换到 GZIP 似乎在任何特定时间 og 字节计数都没有命中,它可以在 1MB 数据之后或 15MB 之后
对应行编译的刀片模板如下
<DESC_LONG><![CDATA[<?php echo $product->display_name; ?>]]></DESC_LONG>
-
</PRICES>
</PRODUCT>
<?php foreach($product->models()->get() as $model): ?>
-
<MEDIA_URL>/images/imported/<?php echo $picture->local_name; ?></MEDIA_URL>
我束手无策,我尝试了以下方法:
- 在服务器上禁用 gzip。
- 在运行脚本之前运行
while(ob_get_level()){ ob_end_clean(); } - 在
.htaccess中,我尝试过SetEnv no-gzip 1、SetEnv no-gzip dont-vary及其各种排列方式。
当我访问其他页面时,没有出现 gzip 编码或标题,所以我认为这是输出大小或输出缓冲区的问题。
【问题讨论】:
-
这可能有用也可能没用,但我看到 gzip 流已经插入了一堆无关的“0xc3”字节,我想试着让它看起来像有效的 UTF-8 .
-
如果在控制台(CLI)中运行会发生这种情况吗?或者,如果您在 127.0.0.1 (localhost) 中获取脚本?
-
能否提供更大的虚假输出样本,从
1fc2 8b08字节开始? -
系统输出在
0000 0d0a之后终止 -
随机出现的标头听起来像是另一个请求或进程负责......太糟糕了,您在共享主机上 - 使得隔离和调试这样的问题相当困难。
标签: php apache laravel gzip mod-deflate