这里有没有人有经验在Php中使用Json_decode获取100个流?我需要看看是否有办法解析这些json流而不将它们加载到内存中,因为它们在我的网站上有超过5000个json流的新闻源。例如,http://example.com/feed/json?paged=1和paged = 2,paged = 3等
我需要找到一种方法来搜索这些文件中的值而不将它们加载到内存中。只需搜索这些Feed页面,如果搜索值匹配,请显示结果。
file_get_contents / json_decode需要FOREVER来完成一个简单的搜索查询。 多个CURL也是如此。
答案 0 :(得分:2)
这是一个非常有趣的问题,你必须使用像JSONCharInputReader这样的流阅读器。
如果你检查this example,你可以看到在“进程”方法中你收到一个部分JSON,你可以解码它并检查这是否匹配搜索的术语,如果没有你可以释放内存取消了var。
或许是另一个,php-streaming-json-parser:
$stream = fopen('doc.json', 'r');
$listener = new YourListener();
try {
$parser = new JsonStreamingParser_Parser($stream, $listener);
$parser->parse();
} catch (Exception $e) {
fclose($stream);
throw $e;
}
JsonStreamingParser的作者有extensive post explaining how it works。