В большинстве разработок есть место для обоих.
Модульное тестирование предназначено для тестирования небольших блоков кода, чтобы убедиться, что они работают как положено.
Функциональное тестирование предназначено для проверки того, что общая функциональность системы соответствует ожидаемой.
Они находятся на разных уровнях, и оба должны быть использованы.
Причиной этого является параметр php mysql.connect_timeout
. Он используется не только для тайм-аута подключения, но и для ожидания первого ответа от сервера. Вы можете увеличить его следующим образом:
ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);
куча вещей, которые могут вызвать это. Я прочитал их и попробовал каждый из них
http://dev.mysql.com/doc/refman/5.1/en/gone-away.html
Я работал над несколькими компаниями веб-хостинга годы и вообще, когда я это вижу, это wait_timeout на стороне сервера, хотя здесь, похоже, это не так.
Если вы найдете решение, я надеюсь, вы его опубликуете. Я хочу знать.
Я заметил кое-что, возможно имеющее отношение к делу.
У меня было запущено два сценария, оба выполняли довольно медленные запросы. Один из них запер столик, а другому пришлось ждать. Тот, который ждал, имел default_socket_timeout = 300. В конце концов он завершился с сообщением «Сервер MySQL ушел». Однако список процессов mysql продолжал показывать оба запроса: медленный все еще работающий, а другой заблокированный и ожидающий.
Так что я не думаю, что mysqld является виновником. Что-то изменилось в клиенте php mysql. Вполне возможно, что default_socket_timeout, который я сейчас установлю в -1, чтобы посмотреть, изменится ли что-нибудь.
Мой случай был связан с повреждением базы данных после незначительного обновления mysql в основном с 5.0.x до 5.1.x. с БД в myisam. Те же строки в запросе: Сервер MySQL ушел Ошибка при чтении заголовка набора результатов
После восстановления и оптимизации с помощью mysqlcheck он вернулся в нормальное состояние без необходимости изменять время ожидания сокета.