У меня возникли проблемы с использованием класса mysqli в PHP, и я нигде не смог найти ответ.
В моем script класс создает соединение mysqli, которое он использует во всех функциях. Затем эти вилки script. Соединение также используется детьми, но я столкнулся с проблемой закрытия соединения (сервер MYSQL ушел) в родительском доме, когда дети умирают.
Прежде чем переключиться на mysqli (просто использовал mysql), я просто вызвал mysql_ping, чтобы убедиться, что соединение db было там до выполнения запроса в родительском процессе. Mysqli имеет аналогичную функцию ping, но на самом деле она не пересоединяется, если соединение отсутствует. Я попытался использовать глобальную настройку mysqli.reconnect = ON без везения (используя php.ini и ini_set).
Функция php mysql_connect позволяет вам захватить уже существующее соединение, поэтому, если бы я использовал mysql вместо mysqli, я мог бы просто повторно использовать соединение в дочернем элементе сразу после процесса forked. НО mysqli, похоже, не имеет такой функциональности...
Единственное, что мне удалось сделать, это вызвать mysqli- > ping(), и если это вернет false, то снова подключитесь к базе данных в родительском. Это ужасно неэффективно, и я бы гораздо лучше понял, как правильно это сделать с помощью mysqli (и без необходимости ручных повторных подключений), которые должны вернуться к mysql..
Любые предложения?