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