gpt4 book ai didi

php - 随机出现的 gzip header

转载 作者:行者123 更新时间:2023-12-03 00:16:26 24 4
gpt4 key购买 nike

我在共享托管环境中有一个长时间运行的脚本,它输出一堆 XML

有时(仅有时)我的输出中会出现随机的 GZIP header ,并且输出将被终止。

例如

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 似乎不会在任何特定时间和字节数上发生,可能是在 1MB 数据之后或在 15MB 之后

编译后的 Blade 模板对应行如下

<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 编码或 header ,因此我认为这与输出大小或输出缓冲区有关。

最佳答案

你终于找到这些 header 从哪里来了吗?我的意思是 apache 还是 php?

您可以使用以下内容来模拟 xml 生成器 scipt:

echo file_get_contents('your_good_test.xml');

如果您看不到任何 header ,我建议调试您的 xml 生成器。您可以尝试在输出之前调用 header_remove();

如果您看到 header ,则必须调试您的网络服务器。尝试通过重写规则禁用 apache 中的 gzip:

`RewriteRule . - [E=no-gzip:1]`

只要你有任何代理或平衡器(nginx、squid、haproxy),你就会自动多一条火线。

关于php - 随机出现的 gzip header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21547936/

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