【发布时间】:2011-06-15 21:57:43
【问题描述】:
我在将 PHP 导入到 MySQL 数据库时遇到问题。当我从终端运行 PHP 脚本时,大约 500 次插入后,php shudown 并返回:
未经授权访问内存 SIGSEGV。
我有:
PHP 5.3 MySQL 5.1.54-1ubuntu4 Ubuntu 11.04
感谢您的帮助!
【问题讨论】:
-
没有看到您的代码,无法回答。但是由于 PHP 没有提供在低级别管理内存的机制,所以这个错误只能由 PHP 本身或加载的模块之一引起。可能是资源泄漏。
-
我认为 PHP 源代码不是什么东西,这有什么帮助,因为在另一台装有 Windows + Apache + 相同 PHP/MySQL 的计算机上,这个导入脚本工作正常.. 我认为那个错误在分配的内存/时间限制等中。我不知道,但 Linux 可能会限制很多 mysql 请求。
-
也许,但如果你展示了代码,我相信我们可以建议如何改变它以首先使用更少的内存。你还应该看看两台机器上给php分配了多少内存,并使用php自己的函数来显示内存使用情况。
-
脚本是一次性使用的,我只需要在表之间转换一些数据(街道数据库,城市部分等。所以它的大数据表)。所以这个源不是优化的:) 而且这个代码是建立在 Nette 框架上的,带有 notORM 数据库层,所以重构代码并不重要。现在,我重新安装了所有 php、apache 包,但仍然相同;( ... 并且内存使用返回 (ater error) 46MB
-
我尝试了一个“内存测试”:$a = "";而 (1) { $a .= str_repeat(".", 100);回声 memory_get_usage() 。 "\n";睡眠(10);并且它没问题(以 err 内存限制 128Mb 结束,所以它是正确的)。
标签: php memory command-line-interface segmentation-fault