【问题标题】:PHP print_r large array to variable not workingPHP print_r大数组到变量不起作用
【发布时间】:2013-05-07 16:05:18
【问题描述】:

我正在尝试将一个大数组打印到一个文件中以对其进行调试。我尝试了两种方法:

$arr = get_large_array();
file_put_contents('file.txt', print_r($arr, true));

和

$arr = get_large_array();
ob_start();
print_r($arr);
file_put_contents('file.txt', ob_get_contents());
ob_end_clean();

在这两种情况下,file.txt 都没有被创建,$arr 被回显,就像我运行了print_r($arr) 一样。这是怎么回事?

【问题讨论】:

    标签: php debugging memory printing


    【解决方案1】:

    问题在于,在内部,print_r($arr, true) 仅使用第二个示例中的输出缓冲。所以在幕后,这两种方法是等价的。但是为什么输出缓冲不起作用?

    出于好奇,我将$arr = get_large_array(); 替换为$arr = array();。令我惊讶的是,file.txt 被创建并且没有输出。我有个主意。我将$arr 改回大数组,运行代码,然后向下滚动到输出的末尾。果然,它被截断了。我查看了错误日志,在print_r 行上出现了大约 20 个“内存不足”错误。在处理大数组时,print_r内存不足,崩溃,忽略file_put_contents和ob_end_clean,出现上述症状。

    对我来说,解决方案是增加内存限制:

    ini_set('memory_limit', '1024M');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-29
      相关资源
      最近更新 更多