Вопрос

У меня установлен сервер WAMP 2.0 на Win XP.Версия Апача:2.2.11 Версия PHP:5.3 MySQL:5.1.36

У меня около 11 таблиц в MySQL.Каждый запуск моего веб-приложения (HTML/Jquery/PHP/MySQL) заполняет около 100 строк в двух таблицах. (В одной из таблиц есть 2 столбца длинных BLOB-объектов, куда загружаются данные размером до 20 МБ, я изменил размер Max_allowed_packet до 32 МБ в файле my.ini)

Приложение работает нормально около 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 ГБ.2 проблемы с вашей настройкой:

  • Первая проблема:Вы запускаете это в Windows.
  • Вторая проблема:Вы запускаете это в Windows.:-)

ПРИЧИНА:

Если отбросить шутки, MySQL хранит данные в своей корневой папке (например, C:\Program Files\MySQL\MySQL Server 5.0\data).Каждая подпапка соответствует базе данных в вашем экземпляре MySQL.Внутри каждой папки находится файл с расширением .frm что соответствует вашим таблицам.Посмотрите, приближается ли таблица, в которой вы храните свои загрузки, к пределу в 2 ГБ.Учитывая, что у вас есть столбец, в котором хранятся загрузки ВПЛОТЬ ДО 20 МБ * 1500 строк — это примерно около 2 ГБ (при условии, что большинство ваших файлов меньше 20 МБ). К сожалению, Windows XP очень трудно справляется с файлами размером более 2 ГБ — ограничения файловой системы и ОС.По той же причине у людей возникают проблемы со своим мировоззрением: они не сортируют и не очищают свою электронную почту.

РЕШЕНИЕ:

Третья проблема: вы храните двоичные данные в базе данных — это никогда не будет хорошей идеей.Сохраните его на диске и просто сохраните ссылку на него (имя или путь) в своей базе данных.Или вы можете сохранить текущую настройку на некоторое время, если перейдете на систему **nix*, которая поддерживает файлы большего размера.Но хранить двоичные данные такого размера напрямую в базе данных по-прежнему плохая идея.Это также замедляет поиск в БД и НАМНОГО медленнее резервное копирование (поскольку в MySQL нет простого инкрементного резервного копирования).

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ:

Я забыл упомянуть, что, поскольку вы используете WAMP, ваша папка MySQL будет находиться в папке установки WAMP.По умолчанию я думаю, что это должно быть в c:\wamp\mysql\data, но я точно не помню.Я обычно использую XAMMP в Windows.

Другие советы

Есть много возможных причин, почему это происходит.Вы храните в памяти массив всех объектов размером 20 МБ?По мере его роста вы можете увеличивать размер каждого процесса Apache до такой степени, что вам не хватает памяти.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top