【发布时间】:2016-04-17 09:32:07
【问题描述】:
尝试使用 Codeigniter dbutil backup() 函数在在线休息服务器上备份数据库时出现致命错误:允许的内存大小为 33554432 字节耗尽(尝试分配 91 字节)错误。
这是我的代码:
$this->load->dbutil();
$backup =& $this->dbutil->backup();
$this->load->helper('file');
write_file('./uploads/db/mybackup.gz', $backup);
我无法找出我做错了什么。
【问题讨论】:
-
php.net/manual/en/ini.core.php#ini.memory-limit 。您刚刚使用了 PHP 设置允许的所有内存。增加 php.ini 中的值。下次读取错误,清楚地说明问题。
-
我可以从本地服务器增加 php.ini 的内存限制。如何增加在线服务器中的 php.ini 值?
-
如果你没有生产权限,不如按照我的建议使用 ini_set 函数
-
你应该看看原生的mysqldump,而不是依赖CodeIgniter基本上用一堆
$output.= 'insert into...';填满PHP的内存,然后将输出写入磁盘。 -
至少在 CodeIgniter 2.1.4 中,转到
/system/database/drivers/mysql/mysql_utility.php并找到函数_backup()以查看您的内存耗尽的确切原因。问题是该实用程序没有将数据流式传输到文件,而是尝试将所有字节加载到内存中。
标签: php database codeigniter