我得到致命错误:在尝试使用Codeigniter dbutil backup()函数备份在线休息服务器上的数据库时,允许的内存大小33554432字节耗尽(试图分配91字节)错误。
这是我的代码:
$this->load->dbutil();
$backup =& $this->dbutil->backup();
$this->load->helper('file');
write_file('./uploads/db/mybackup.gz', $backup);
我找不出我哪里做错了。
您需要使用以下方法来增加脚本内存:
ini_set('memory_limit', '-1');
您需要在文件顶部使用这一行。
通过增加memory_limit,您的脚本将占用服务器的无限内存使用量。
如果您可以访问php.ini文件,则可以从php.ini 旁注: 如果你认为无限内存会在其他区域受到影响,你可以将自定义值设置为:ini_set('memory_limit', '512M'); //increase size as you need
数据库可能太大?
"由于PHP可用的执行时间和内存有限,备份非常大的数据库可能是不可能的。如果数据库非常大,您可能需要通过命令行直接从SQL服务器进行备份,或者如果您没有root权限,请让服务器管理员代为备份。"
http://www.codeigniter.com/user_guide/database/utilities.html
编辑:正如@E_p所说,内存不足,但我的回答可能是最有可能导致错误的原因。。。
编辑2:
正如另一个答案中所指出的,我强烈警告您不要使用将内存使用设置为无限制的ini_set('memory_limit', '-1');
,尤其是当您在共享服务器上时。