У меня длинный сценарий php, который в основном представляет собой бесконечный цикл, который прослушивает события (его бот xmpp), я запускаю сценарий с nohup php bot.php &
.проверить, действительно ли соединение mysql
Необработанные структура сценария как
$mysqli = mysqli_connect(...);
while(1) {
if(event1) {
// do database action
} else if(event2) {
// non database action
echo "something";
}
}
Когда я запускаю сценарий все работает отлично на начальном этапе. Когда я вернусь через несколько часов, бот отлично работает, если я выдаю событие2, но не смог выполнить событие1 с ошибкой, связанной с базой данных (PHP Fatal error: вызов функции-члена bind_param() для не-объекта в строке n)
Как я могу сохранить соединение mysql действительным или есть способ проверить, действительно ли соединение mysqli действительно, чтобы я мог снова подключиться?
Спасибо, mysqli_ping работал. Я хотел бы добавить, мне пришлось добавить mysqli.reconnect = On в моем php.ini для подключения, которое будет автоматически восстановлено, если оно закрыто. (Внимание! Ini_set не будет работать в этом случае!) – Gunjan
@Gunjan Большое спасибо за ваш комментарий - это помогло мне решить мою проблему. Директива для php.ini, которую я добавил, была 'mysqli.reconnect =" 1 "' и не нужно было добавлять '$ mysqli-ping()' в код. – user1477388