Intereting Posts

PHP: сервер MySQL ушел

Я знаю, что этот вопрос задавали много раз, но я все пробовал.

У меня есть PHP-скрипт, который выполняет итерацию через тысячи изображений, при необходимости изменяет размер, а затем вставляет в базу данных.

Я получаю сообщение об ошибке:

Предупреждение: mysql_query () [function.mysql-query]: сервер MySQL ушел в C: \ Utilities \ server \ htdocs \ newGen \ index.php в строке 105

Предупреждение: mysql_query () [function.mysql-query]: Ошибка чтения заголовка набора результатов в C: \ Utilities \ server \ htdocs \ newGen \ index.php в строке 105

Я использую Xampplite, поэтому некоторые части php.ini отсутствуют, другие используют для решения проблемы, потому что они не используют облегченную версию.

Я уверен, что проблема не в тайм-аутах. Хотя сценарий будет работать в течение нескольких минут, он пропускает изображения, которые уже обработаны, и поэтому я быстро получаю сообщение об ошибке в течение примерно 10 секунд. Может быть, это связано с максимальным размером таблицы? Я не могу найти что-либо в моем php.ini, который контролирует это.

Вся помощь очень признательна, я собираюсь на это часами.

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

Вот код на отметке 105, это запрос:

// Add tNail and image to db mysql_query("INSERT INTO gallery values('','$hash','$thumbBlob','$imageBlob','$type','','0','0.0')"); // $q->execute(); print "Successfully processed $fileName<br>"; 

Как вы можете видеть по комментариям, я попробовал PDO с этим и получил ту же ошибку, по глупости я думал, что вернуться к командам mysql_ поможет.

Если это поможет, сценарий каждый раз жалуется на одно и то же изображение, но каждый образ всего лишь несколько десятков килобайт и не более пары сотен.

Проверьте значение « max_allowed_packet » в файле конфигурации my.cnf MySQL.

Это происходит из-за того, что скрипт PHP слишком долго обрабатывал все, что он обрабатывал, и время ожидания подключения к серверу. У вас есть несколько решений:

  • Убедитесь, что соединение все еще включено, и при необходимости снова подключитесь (у mysql_connect есть встроенные функции, чтобы сделать это для вас)
  • Используйте mysql_pconnect (но не забудьте закрыть соединение в конце, потому что оно не будет закрыто для вас)
  • Увеличьте время работы вашего скрипта, чтобы избежать таймаута.

вы можете использовать mysql_ping() чтобы убедиться, что соединение все еще подключено, если вы не можете попытаться заново подключиться или сделать сообщение об ошибке, сообщающее вам, как далеко прошел сценарий до того, как соединение было потеряно.