【问题标题】:Output from ob_get_clean() is truncated at 1024 characters?ob_get_clean() 的输出被截断为 1024 个字符?
【发布时间】:2011-03-13 15:38:32
【问题描述】:

我正在编写其他人的代码,并且有大约 800 行标记与标签混合在一起。我正在尝试将一些模板应用于这些页面,我想我会首先捕获输出缓冲区中的所有输出,将其作为变量返回,然后逐个整理。

问题是在缓冲区的末尾,当我将输出作为字符串返回时,它会被截断为 1024 个字符。为什么会这样?

【问题讨论】:

  • 我刚刚检查了 php.ini 文件,并且 memory_limit 设置为 32 mb 所以我怀疑就是这样..

标签: php output-buffering truncation


【解决方案1】:

通常情况下,它不会那样做,这可能意味着:

  1. 还有另一个 ob_start($callback) 带有特定的回调活动,搞砸了(ob_get_level 说什么?)。
  2. ob_get_clean() 后出现错误操作
  3. 涉及错误的检查方法,并且 1024 截止不正确(xdebug 对 var_dump 的限制、html-attributes 中的隐藏内容和不查看源代码等)

这3个就差不多了,没有代码就没什么好说的了。

【讨论】:

    【解决方案2】:

    这 1024 个字节可能不是输出的开头。某些内容可能已经通过了输出缓冲区。出于测试目的尝试:

    ob_start(NULL, 1<<20);  // 1MB buffer
    
    echo ...;
    
    $all = ob_get_contents();
    ob_end_clean();
    

    也可以改用ob_get_flush() 进行测试。如果一切都失败了,请使用自定义 ob_ 处理程序。

    【讨论】:

      猜你喜欢
      • 2013-06-07
      • 2022-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      相关资源
      最近更新 更多