致命错误:在尝试备份数据库时,出现允许的33554432字节的内存大小耗尽(试图分配91字节)错误


Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 91 bytes) error while trying to backup database

我得到致命错误:在尝试使用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');,尤其是当您在共享服务器上时。