2009-11-27 106 views
2

我在Win XP上安装了WAMP 2.0服务器。 Apache版本:2.2.11 PHP版本:5.3 MySQL:5.1.36Apache httpd错误和崩溃

我在mysql中有大约11个表。我的Web应用程序(HTML/Jquery/PHP/MySQL)每运行一次,就会在其中两个表中填充大约100行(其中一个表有2个Long blob列,上传大小高达20MB的数据,我更改了Max_allowed_pa​​cket大小到32M my.ini文件)

该应用程序工作正常约3周,直到表中的行数达到> 1500。

然后我看到的httpd崩溃消息(apache httpd的遇到错误,需要关闭 )和它说非法内存refernce 请在下面找到一些日志

szAppName : httpd.exe  szAppVer : 2.2.11.0  szModName : php5ts.dll  
szModVer : 5.3.0.0  offset : 0000c309  


C:\DOCUME~1\blrcom\LOCALS~1\Temp\WERc677.dir00\httpd.exe.mdmp 
C:\DOCUME~1\blrcom\LOCALS~1\Temp\WERc677.dir00\appcompat.txt 

如果我清除了两个表(1500>行)。问题仍然存在。

我正在使用PDO PHP更新表。

任何人都可以引导我,因为这正在成为一个阻滞剂。

问候, 大额牛

+0

你检查了Windows的事件日志,看看导致崩溃的原因是什么? – mauris 2009-11-27 07:45:03

+1

上面贴出的“日志”几乎告诉我们什么都没有。您可以自己阅读小型转储(http://social.msdn.microsoft.com/Forums/en/isvwindowserrors/thread/cb0af233-8d6e-417a-a271-56148a8ff0ef,http://windowscoding.com/blogs/blake/archive /2009/05/12/opening-a-mini-dump-file-mdmp-file-with-WinDbg.aspx)。如果确实是一个bug,请将其报告给适当的(可能是PHP或MySQL)开发人员。 – outis 2009-11-27 08:04:51

+0

错误应用程序httpd.exe,版本2.2.11.0,错误模块php5ts.dll,版本5.3.0.0,错误地址0x0000c309。 – Vidya 2009-11-27 08:09:36

回答

3

问题:

我有一个怀疑,你打一个2GB的文件大小的墙。与您的设置2问题:

  • 第一个问题:您在Windows上运行此。
  • 第二个问题:你正在windows上运行这个。 :-)

原因:

笑话不谈,在其根文件夹Mysql的存储数据(例如C:\ Program Files文件\的MySQL \ MySQL服务器5.0 \数据)。每个子文件夹都对应于您的MySQL实例中的一个数据库。每个文件夹内都有一个扩展名为.frm的文件,它对应于您的表格。查看您要上传的表格是否接近2 GB的上限。考虑到你有一列存储上传 20 Mb * 1500行 - 大致在2 GB左右(假设你的大部分文件都小于20 MB)不幸的是,Windows XP处理大于2GB的文件非常困难 - 文件系统和操作系统的限制。人们对他们的前景有困难的原因也是一样 - 因为他们不会对他们的电子邮件进行分类或清理。

SOLUTION:

第三个问题 - 你存储在数据库二进制数据 - 从来就不是一个好主意。将它存储在磁盘上 - 只需在你的数据库中引用它(名称或路径)。或者,如果您移动到支持更大文件大小的** nix *系统,您可以保留一段时间的当前设置。但是,将这种大小的二进制数据直接存储在数据库中仍然是一个糟糕的主意。这也使得你的数据库搜索速度更慢,备份更慢(因为在MySQL中没有简单的增量备份)

希望有所帮助。

编辑:

我忘了提,因为你正在使用WAMP,你MySQLfolder将是你的WAMP安装文件夹。默认情况下,我认为它应该在c:\ wamp \ mysql \ data中 - 但我不确定。我通常在Windows上使用XAMMP。

1

有很多的为什么发生这种情况的可能原因。你是否在内存中保存了所有20 MB的对象数组?随着增长,你可能会增加apache的每个进程大小到你内存不足的地步。