【问题标题】:HTTP ERROR 500 with json_decode when using large files使用大文件时带有 json_decode 的 HTTP ERROR 500
【发布时间】:2016-08-03 13:53:54
【问题描述】:

我正在使用以下方法解码 JSON 文件:

$filename = 'file.json';
$json = file_get_contents($filename);
$data = json_decode ($json,true);

这对不大的文件非常有效。它在 XAMMP json_decode 中也能正常工作。

小文件可以正常工作,但一旦它们变大(几 MB+),就会出现 HTTP 500 错误。

$filename 在 PHP 中加载良好且完全,所以这不是问题。

任何人都知道这是 JSON 处理大文件或服务器设置的限制(在 PHP 中已将内存和时间限制设置为 -1 和 0)。

谢谢!

【问题讨论】:

  • PHP 错误日志是怎么说的?
  • 如果您已经修改了内存限制,我猜您已经修改了错误的php.ini 文件。 apache\bin` folder (affects PHP under apache) and one in the php` 文件夹中有 2 个(仅影响 PHP CLI 模式)。
  • PHP也有时间限制,请尝试在json_decode之前调用set_time_limit(0)
  • JSON 是由另一个站点创建的,文件大小应该不是问题(最大 22MB)。即使是 9MB 的文件,它也会失败。所以不是重复的问题。

标签: javascript php json decode


【解决方案1】:

最有可能导致此问题的第一件事是 PHP 内存不足。

检查 memory_limit 设置下的 php.ini 并增加它。

您还需要检查您的 ma​​x_execution_time 以确保它没有超时。

您的 json_encode 语句之前的最后一件事:set_time_limit(0);

另外我建议使用 JMS/Serializer 之类的包

【讨论】:

  • memory_limit 设置为 128MB
  • max_execution_time 设置为 200(不过我立即收到错误消息)
  • 您的错误日志中是否有任何错误或警告?
  • 还要检查你的编辑是否正确 php.ini...phpinfo() 会告诉你正在加载的 php.ini 文件的位置
【解决方案2】:

将服务器内存增加到 1GB 即可解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-22
    • 2017-03-10
    • 1970-01-01
    • 2019-09-24
    • 2021-06-18
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多