PHP MySQL устанавливает время ожидания подключения

Есть определенные сообщения о времени подключения к MySQL из PHP с использованием mysql.connect_timeout. Я хочу знать, установлен ли этот тайм-аут PHP из времени первоначального подключения к MySQL или действителен для конкретного запроса к базе данных?

Мое дело в том, что у меня есть страница с подключением к MySQL сверху, а затем я выполняю 3-4 запроса к MySQL один за другим. 1-й и 2-й запросы выполняются всего 1-2 секунды для выполнения, когда третий запрос занимает 20 секунд. Теперь, когда третий запрос занимает более 20 секунд, я хочу назвать тайм-аут. Итак, вопрос заключается в том, что установка этого времени из PHP применима к первоначальному подключению к базе данных или применима к каждому последующему запросу (независимо). Если это так, то как я могу установить его на тайм-аут через 20 секунд для третьего запроса?

Solutions Collecting From Web of "PHP MySQL устанавливает время ожидания подключения"

Параметр connect_timeout действует только во время соединения. Полезно проверить, доступен ли ваш сервер БД за 20 секунд или около того. После подключения указанный таймаут больше недействителен.

Я не могу найти параметр таймаута запроса на официальной странице руководства mysql: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html, поэтому я не думаю, что это возможно.

Сигаларм – ваш друг. Вы можете установить будильник и использовать обработчик сигнала для обнаружения тревоги.

http://php.net/manual/en/function.pcntl-alarm.php

видеть это:

set_time_limit(0); ini_set('mysql.connect_timeout','0'); ini_set('max_execution_time', '0'); 

Используйте MySQL версии 5.7.4 или выше и установите соответствующую переменную «max_statement_time», запрос завершится с ошибкой при достижении тайм-аута

см. http://mysqlserverteam.com/server-side-select-statement-timeouts/

Он находится в файле конфигурации php. Местоположение этого файла отличается от одной системы другой. На Ubuntu и Debian он находится в /etc/php5/apache2/php.ini

 mysql.connect_timeout = 60 /* the default value is 60 seconds */ 

Вам придется разбить дочерний процесс, родительский процесс убьет дочерний процесс, если какое-то условие не будет выполнено в течение 20 секунд.

Или используйте такой язык, как node.js, который не блокирует текущий поток для операции ввода-вывода, как запрос.