2012-11-07 13 views
0

CODE疲惫的记忆:而分配

if (flock($fp, LOCK_EX)) 
{ 
    fwrite($fp, serialize($this->_contents)); 
    flock($fp, LOCK_UN); 
} 

错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 17805286 bytes)..... 

错误行:

fwrite($fp, serialize($this->_contents)); 

任何想法如何解决这一问题?我的网站托管在共享主机上,所以我没有机会更改内存设置。

感谢

+2

这是什么$ this - > _ contents? –

+1

如果您可以尝试遍历$ this - > _ contents中每个项目的内容并逐个消毒每个项目,然后使用最终标记手动包装该字符串的外部,则serialize函数可以使用大量内存为每个项目。我不得不通过serilze函数的细节来告诉你如何直接做这件事,但你应该很容易自己去查看这些信息。 –

+0

'$ this - > _ contents'有大约150万条记录来自数据库。 – BentCoder

回答

0

最有可能serialize($this->_contents)的问题。
我通常倾向于建议不要使用序列化来将数据存储在数据库或文件中。

您应该拆分_contents中的数据并分别写入它们。

0

It might not solve your memory issue (as you can not change that you can not change that), but it might allow you more control:

对于类的$this$this->_content要么,你可以实现在一个内存更优化的方式返回数据的Serializeable

如果你真的可以记忆优化它,那么你可以透明地使用它serialize