Рейтинг:0

Почему выбор MySQL иногда не создает «клиентское соединение»?

флаг gl

Я провожу некоторые тесты (на своем сервере разработки), чтобы помочь мне понять, что вызывает постоянно растущий список подключений на моем рабочем сервере. Я предполагаю, что есть определенные страницы, которые не закрывают соединение с помощью mysql_close(). Поэтому я пытаюсь сначала подтвердить, что создает соединения, а затем подтвердить, как убедиться, что они закрыты.

Для этого я создал простой скрипт для создания соединения, а затем mysql_close() для закрытия соединения. К сожалению, мое тестирование приостановлено, потому что я даже не могу подтвердить, что я создаю соединения.

Когда я выполняю следующий код (обратите внимание, что mysql_close()) закомментирован, я ожидаю увидеть новое соединение в моем списке клиентских подключений, и я ожидаю, что оно убьет себя через 20 секунд, так как я установил для wait_timeout значение 20 , Однако, похоже, даже не создается никакого соединения.

<?php

$dblocation = "127.0.0.1";
$dbusername = "blah_dev";
$dbpassword = "test";
$dbname = "blah_dev";
$dbdescription = "";

$conn = mysql_connect($dblocation, $dbusername, $dbpassword) or die ("<span style='color:red'>Unable to connect!  Press F5 to try again.</span>");
mysql_select_db($dbname, $conn) or die ("Unable to select database!");

$sql = "select fullname from months";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result)){

  echo "<table border=1>";
  do{
    $month = $row["fullname"];
    echo "<tr><td>".$month."</td></tr>";
  }while ($row = mysql_fetch_array($result));

  echo "</table>";
}

//mysql_close();

?>

Я даже добавил простой оператор выбора, чтобы подтвердить, что я устанавливаю соединение, и я это делаю. Почему это подключение не отображается в моем списке клиентских подключений в MySQL Workbench? Я также использую другой инструмент (диспетчер диагностики MySQL), чтобы показать мне текущие потоки, и он там тоже не отображается.

Что мне здесь не хватает?

флаг ua
Обеспечивает ли какой-либо уровень в вашем стеке «пул соединений»?
флаг ua
Если Workbench не подключен как «root», вы можете видеть только подключения, исходящие от одного и того же «пользователя».
Wilson Hauck avatar
флаг jp
Использование общего журнала — отличный способ подтвердить, что происходит. Не забудьте установить GLOBAL general_log=OFF; чтобы не заполнить ваши носители, когда вы закончите расследование.
Wilson Hauck avatar
флаг jp
Винсент, вы рассматривали возможность использования mysqli_connect вместо mysql_connect. Этот URL может быть полезен. https://www.php.net/manual/en/mysqli.error.php
флаг gl
@RickJames Я подключен как Root.
флаг gl
@WilsonHauck На самом деле я нахожусь в процессе переключения всего своего кода на DBO, и я фактически использую их смесь, но у меня все еще есть более 2000 операторов mysql_query, так что это большая работа и долгий процесс переключения каждого оператора над. На данный момент я просто провожу тестирование с mysql_connect, потому что мне нужно было выбрать один.
флаг gl
@WilsonHauck, просто для ясности: я подключаюсь, потому что, если бы я этого не сделал, я бы не смог выполнить свой оператор выбора и отобразить результаты. Соединение просто не отображается в моем списке соединений, и это делает невозможным тестирование управления соединениями. Кроме того, это кажется случайным. Иногда я вижу два соединения в списке соединений после выполнения этого кода (никогда не вижу ни одного), а иногда не вижу ни одного.
Wilson Hauck avatar
флаг jp
Винсент, Пожалуйста, выложите из производства на pastebin.com и поделитесь ссылками. После 48 часов безотказной работы следующая информация сделает возможным анализ. Войдите в систему как root и из командной строки MySQL, SHOW GLOBAL VARIABLES; и ПОКАЗАТЬ ГЛОБАЛЬНЫЙ СТАТУС; выявить возможные причины роста связей. Включить полный SHOW FULL PROCESSLIST; также. Спасибо, что решили опубликовать эту информацию.
флаг gl
@WilsonHauck Не уверен, что именно вы хотите, чтобы я опубликовал.
Wilson Hauck avatar
флаг jp
Посмотрите на странице «Данные, которые нам нужны» на нашем веб-сайте, чтобы узнать, как получить данные для нас. Спасибо, Уилсон.
флаг gl
@RickJames, как мне узнать, использую ли я пул соединений? Я установил MySQL с настройками по умолчанию, поэтому я предполагаю, что это то, что нужно включить явно, но как я могу подтвердить?
флаг gl
Неважно вы все. Я понял. Соединение создается, но закрывается сразу после этого, поэтому кажется, что оно не создает соединение. Виноват.
Рейтинг:0
флаг gl

Оказывается, этот код делает создать клиентское соединение, но поскольку он закрывает его, как только скрипт завершает работу, он не появляться для создания соединения. :/

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.