php中的内存泄漏json_encode()

时间:2015-04-06 02:54:53

标签: php apache

我有apache httpd和php的问题。 apache httpd的许多子进程占用了大量内存,我的服务器挂断了。

这是一个示例代码生成相同的问题。

// some large data from remote server consisting of utf8 unicde char.
// (It's a just example.)
$text = str_repeat("abcdefg123456한글입니다", 100);
$data = "{\"result\":[" . str_repeat("{\"" . $text . "\":\"" . $text . "\"},", 1000);
$data = rtrim($data, ",");
$data .= "]}";

// make a json object
$json = json_decode($data);

// manipulating the json object

// return a result
echo json_encode($json);

在我的php代码中,转换后的大型json对象由utf8字符串组成一个json字符串以返回结果,httpd进程的内存使用量增加超过160m并保持不变。 (php.ini中memory_limit的值为32m。)

我通过strace调查了这个问题。 json_encode()调用了很多mmap()系统调用,并没有调用任何munmap()系统调用。

我向php错误报告发布了一个问题,但我尚未收到任何回复。 https://bugs.php.net/bug.php?id=69305

我认为json_encode()存在内存泄漏问题。是否有人有同样的问题?

我的意思是请就这个问题给我一些建议。

0 个答案:

没有答案