【问题标题】:How to read JSON file in PHP without using file_get_contents?如何在不使用 file_get_contents 的情况下在 PHP 中读取 JSON 文件?
【发布时间】:2015-03-14 07:25:56
【问题描述】:

我创建了一个简单的 php 文件,它读取本地 json 文件并使用数据来响应发送到页面的一些查询。

我正在使用file_get_contents() 来读取文件。但随着请求数的增加,由于与文件的并发连接,我遇到了一些性能问题。

是否可以使用require()include()来读取和解析json文件?

【问题讨论】:

  • 你需要做的是使用数据库而不是json文件。
  • 读取文件一次,将其内容转储为 PHP 代码(var_dump()var_export() 之一),您只需在代码中使用 require_once。顺便说一句,你的情况是什么参数?每分钟的请求数、JSON 的大小、您如何处理数据?
  • 听起来您正在尝试创建一个缓存系统。最好只将 PHP 序列化为文件,然后根据需要反序列化。这是我为我创建的 MVC 框架编写的示例,并在一些客户生产站点上使用。 github.com/SpeedyPHP/Framework/blob/master/lib/Speedy/Cache/…。我没有进行任何测试,但我想它会更快,因为它不必解析 JSON(可能是可读的,但可能不是机器友好的)。

标签: php json file parsing


【解决方案1】:

我找到了一些合适的解决方案,我现在使用curl 来获取文件内容,如下所示:

$curlSession = curl_init();
curl_setopt($curlSession, CURLOPT_URL, 'http://mysite/file.json');
curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
$jsonDataString = curl_exec($curlSession);
curl_close($curlSession);

【讨论】:

  • 如果 php 脚本和 json 位于同一台服务器上,则此方法是最慢的方法。
【解决方案2】:

是的,你可以使用require()

 ob_start();
 ob_implicit_flush(false);
 require('test.json');
 $json = json_decode(ob_get_clean() , true );

但我认为它并不比file_get_contents()

提高性能的最佳方法是直接将 json 文件加载到浏览器(例如通过 jquery),无需 php 解析。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 2020-10-08
    • 1970-01-01
    • 2011-03-27
    相关资源
    最近更新 更多