2010-07-16 3 views
3

У меня длинный сценарий 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 действительно, чтобы я мог снова подключиться?

ответ

5

вы можете свистеть Connection http://php.net/manual/en/function.mysql-ping.php

+3

Спасибо, mysqli_ping работал. Я хотел бы добавить, мне пришлось добавить mysqli.reconnect = On в моем php.ini для подключения, которое будет автоматически восстановлено, если оно закрыто. (Внимание! Ini_set не будет работать в этом случае!) – Gunjan

+0

@Gunjan Большое спасибо за ваш комментарий - это помогло мне решить мою проблему. Директива для php.ini, которую я добавил, была 'mysqli.reconnect =" 1 "' и не нужно было добавлять '$ mysqli-ping()' в код. – user1477388

Смежные вопросы