Apache httpd错误和崩溃

时间:2009-11-27 07:38:13

标签: php mysql wamp apache

我在Win XP上安装了WAMP 2.0服务器。 Apache版本:2.2.11 PHP版本:5.3 MySQL:5.1.36

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

该应用程序正常运行大约3周,直到其中一个表中的行数达到> 1500.

然后我看到httpd崩溃消息(Apache httpd遇到错误并需要关闭 )它说非法记忆参考 请在下面找到一些日志

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来更新表格。

任何人都可以指导我,因为这会成为阻碍者。

此致 大额牛

2 个答案:

答案 0 :(得分:3)

<强>问题:

我怀疑你是在打2GB文件大小的墙。您的设置存在2个问题:

  • 第一个问题:你在Windows上运行它。
  • 第二个问题:你在Windows上运行它。 : - )

<强>原因:

除了笑话,Mysql将数据存储在其根文件夹中(例如C:\ Program Files \ MySQL \ MySQL Server 5.0 \ data)。每个子文件夹对应于MySQL实例中的数据库。在每个文件夹中都有一个扩展名为.frm的文件,对应于您的表格。查看您存储上传的表格是否接近2 GB的限制。考虑到你有一个存储上传 UP TO 20 Mb * 1500行的列 - 大约2 GB左右(假设你的大多数文件都小于20 MB)不幸的是,Windows XP真的很难处理文件大于2GB的文件 - 文件系统和操作系统的限制。这也是人们对他们的前景造成麻烦的原因 - 因为他们不会对他们的电子邮件进行排序或清理。

<强> SOLUTION:

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

希望有所帮助。

修改

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

答案 1 :(得分:1)

发生这种情况的原因有很多。您是否在内存中保留了所有20 MB对象的数组?随着这种情况的发展,您可能会将apache的每个进程大小增加到内存不足的程度。