在将一个大字符串构建为blob之后,我正在登录到一个数据库表。我认为正在发生的问题是字符串变得非常大,因为长时间运行会导致php脚本出现内存问题。我可以将字符串写入文件,但仍需将其加载到内存中才能登录到mysql。
有没有什么方法可以做到这一点而不引起web服务器上的内存问题?
例子
$this->log("1");
$this->log("2");
$this->log("3");
$this->log("4");
....
function log($msg)
{
$this->log.=$msg;
}
function save_log()
{
insert into log ('msg') VALUES ($this->log)
}
2条答案
按热度按时间bfnvny8b1#
要附加到blob,当然需要有正确的id才能附加到blob或所有blob。
另一方面,我不会创建一个如此大的斑点,我不能读出或搜索通过。我将创建一个日志表,其中包含日志id、创建日期和更新日期。然后创建一个包含单个日志项的数据库,并为它们提供一个指向日志id的链接。
这将使日志易于搜索。
xeufq47z2#
看起来您正在内存中积累一个非常大的字符串,等待在php进程结束时写入数据库。内存过度消耗是因为存储字符串的php变量,而不是来自数据库。
最好定期将数据写入数据库,并重新初始化phpvar以释放进程内存。
在mysql中,可以附加到
BLOB
使用CONCAT function :
其中问号是php var的值。