我有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()存在内存泄漏问题。是否有人有同样的问题?
我的意思是请就这个问题给我一些建议。