PHP: mysql_ping - проблема автоматического переподключения - PullRequest
1 голос
/ 12 апреля 2011

Я работаю со старым, но очень сложным фрагментом php-кода, который опирается на прямой доступ к mysql через функции mysql_ *.Код широко использует mysql_ping, но он предполагает, что каждый вызов mysql_ping также будет переподключен в случае, если он обнаружит, что время соединения истекло.Проблема в том, что с MySQL 5.0. что-то mysql_ping не переподключается автоматически .В документации, которую я нашел, мне нужно вызвать mysql_options с соответствующим флагом, но нет такой функции, как mysql_options .Вместо этого есть mysqli_options, но мы буквально не можем переключиться на mysqli_ * сейчас, это заняло бы слишком много времени.Понижение версии MySQL также не рассматривается как решение.Есть идеи, как это исправить?

Спасибо

1 Ответ

8 голосов
/ 12 апреля 2011

После проверки руководства php я нашел этот фрагмент кода, который может помочь вам справиться с состоянием соединения с БД:

<?php

$conn = mysql_connect('localhost','user','pass');
mysql_select_db('db',$conn);

if (!mysql_ping ($conn)) {
//here is the major trick, you have to close the connection (even though its not currently working) for it to recreate properly.
   mysql_close($conn);
   $conn = mysql_connect('localhost','user','pass');
   mysql_select_db('db',$conn);
}

//run queries knowing that your connection is alive....

?>
...