php - Apache httpd 错误并崩溃

标签 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) 的每次运行都会在其中 2 个表中填充大约 100 行。(其中一个表有 2 个 Long 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 来更新表。

任何人都可以指导我,因为这正在成为一个障碍。

问候, 米通

最佳答案

问题:

我怀疑您遇到了 2GB 文件大小的限制。您的设置有 2 个问题:

  • 第一个问题:您正在 Windows 上运行它。
  • 第二个问题:您正在 Windows 上运行此程序。 :-)

原因:

开个玩笑,Mysql 将数据存储在其根文件夹中(例如 C:\Program Files\MySQL\MySQL Server 5.0\data)。每个子文件夹对应于 MySQL 实例中的一个数据库。每个文件夹内都有一个扩展名为 .frm 的文件,它与您的表相对应。查看您存储上传内容的表是否接近 2 GB 限制。考虑到您有一个存储上传最多 20 Mb * 1500 行的列 - 大约为 2 GB(假设您的大多数文件都小于 20 MB),不幸的是 Windows XP 确实很难处理文件大于 2GB - 文件系统和操作系统的限制。这与人们在前景方面遇到麻烦的原因相同 - 因为他们不整理或清理电子邮件。

解决方案:

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

希望有帮助。

编辑:

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

关于php - Apache httpd 错误并崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1807276/

相关文章:

java - JDBC表错误: Unknown database

php - 通过家庭服务器设置网站

php - (mySQL 删除重复的数据库条目 WHERE ...

PHP Curl 从 https URL 下载空文件 (.gz)

php - FFmpeg/avconv 使用 PHP-FFmpeg 添加水印旋转视频

php - 如何将 Guzzle 响应流式传输到浏览器?

php - UPDATE 时使用 SHA512 对密码进行哈希处理

mysql - 如何计算mysql中不同表中的不同元素?

MYSQL 内文件连接

php mysql 和移动客户端,显示从 UTC 到不同时区的日期