Score:0

เหตุใดบางครั้ง MySQL ที่เลือกจึงไม่สร้าง "การเชื่อมต่อไคลเอ็นต์"

ธง gl

ฉันกำลังทำการทดสอบบางอย่าง (บนเซิร์ฟเวอร์ dev ของฉัน) เพื่อช่วยฉันค้นหาว่าอะไรเป็นสาเหตุของรายการการเชื่อมต่อที่เพิ่มขึ้นเรื่อย ๆ บนเซิร์ฟเวอร์ที่ใช้งานจริงของฉัน ข้อสันนิษฐานของฉันคือมีบางหน้าที่ไม่ได้ปิดการเชื่อมต่อโดยใช้ 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();

?>

ฉันยังเพิ่มคำสั่ง Select อย่างง่ายเพื่อยืนยันว่าฉันกำลังสร้างการเชื่อมต่อ และฉันกำลังทำอยู่ เหตุใดการเชื่อมต่อนี้จึงไม่แสดงในรายการการเชื่อมต่อไคลเอนต์ของฉันใน MySQL Workbench ฉันยังใช้เครื่องมืออื่น (MySQL Diagnostic Manager) เพื่อแสดงเธรดปัจจุบันให้ฉันเห็น แต่ก็ไม่แสดงที่นั่นเช่นกัน

ฉันพลาดอะไรไปที่นี่?

ua flag
เลเยอร์ใดในสแต็กของคุณมี "การรวมการเชื่อมต่อ" หรือไม่
ua flag
เว้นแต่จะเชื่อมต่อ Workbench เป็น "รูท" คุณจะเห็นเฉพาะการเชื่อมต่อที่มาจาก "ผู้ใช้" เดียวกัน
Wilson Hauck avatar
jp flag
การใช้บันทึกทั่วไปเป็นวิธีที่ดีในการยืนยันสิ่งที่เกิดขึ้น อย่าลืมตั้งค่า GLOBAL general_log=OFF; เพื่อหลีกเลี่ยงการเติมสื่อเก็บข้อมูลของคุณเมื่อคุณดำเนินการตรวจสอบเสร็จแล้ว
Wilson Hauck avatar
jp flag
Vincent คุณเคยพิจารณาใช้ mysqli_connect แทน mysql_connect หรือไม่ URL นี้อาจมีประโยชน์ https://www.php.net/manual/th/mysqli.error.php
gl flag
@RickJames ฉันเชื่อมต่อในฐานะรูท
gl flag
@WilsonHauck จริง ๆ แล้วฉันอยู่ในขั้นตอนการเปลี่ยนรหัสทั้งหมดของฉันเป็น DBO และจริง ๆ แล้วฉันใช้ทั้งสองอย่างผสมกัน แต่ฉันยังมีคำสั่ง mysql_query มากกว่า 2,000 รายการ ดังนั้นจึงเป็นงานใหญ่และกระบวนการที่ยาวนานในการเปลี่ยนทุกคำสั่ง เกิน. ณ จุดนี้ ฉันเพิ่งทำการทดสอบกับ mysql_connect เพราะฉันต้องเลือกอันหนึ่ง
gl flag
@WilsonHauck เพื่อให้ชัดเจน ฉันกำลังเชื่อมต่อเพราะถ้าฉันไม่ได้ ฉันคงไม่สามารถดำเนินการคำสั่งที่เลือกและแสดงผลลัพธ์ได้ การเชื่อมต่อไม่แสดงในรายการการเชื่อมต่อของฉัน และทำให้ไม่สามารถทดสอบการจัดการการเชื่อมต่อได้ นอกจากนี้ยังดูเหมือนสุ่ม บางครั้งฉันเห็นการเชื่อมต่อสองรายการในรายการการเชื่อมต่อของฉันหลังจากรันโค้ดนี้ (ไม่เคยพบเลย) และบางครั้งฉันไม่เห็นเลย
Wilson Hauck avatar
jp flag
Vincent โปรดโพสต์จากการผลิตไปที่ pastebin.com และแชร์ลิงก์ หลังจากเวลาทำงาน 48 ชั่วโมง ข้อมูลต่อไปนี้จะทำให้การวิเคราะห์เป็นไปได้ เข้าสู่ระบบในฐานะรูทและจากพรอมต์คำสั่ง MySQL แสดงตัวแปรทั่วโลก และแสดงสถานะทั่วโลก เพื่อตรวจหาสาเหตุที่เป็นไปได้ของการเชื่อมต่อที่เพิ่มขึ้น รวมรายการแสดงกระบวนการทั้งหมดที่สมบูรณ์ อีกด้วย. ขอขอบคุณที่พิจารณาโพสต์ข้อมูลนี้
gl flag
@WilsonHauck ไม่แน่ใจว่าคุณต้องการให้ฉันโพสต์อะไรกันแน่
Wilson Hauck avatar
jp flag
ดูที่หน้า 'ข้อมูลที่เราต้องการ' ของเว็บไซต์ของเราสำหรับวิธีรับข้อมูลมาหาเรา ขอบคุณวิลสัน
gl flag
@RickJames ฉันจะรู้ได้อย่างไรว่าฉันกำลังใช้การรวมการเชื่อมต่อ ฉันติดตั้ง MySQL ด้วยการตั้งค่าเริ่มต้น ดังนั้นฉันเดาว่านี่เป็นสิ่งที่จำเป็นต้องเปิดใช้งานอย่างชัดเจน แต่ฉันจะยืนยันได้อย่างไร
gl flag
ไม่เป็นไร ฉันคิดออก มีการสร้างการเชื่อมต่อแต่ปิดทันทีหลังจากนั้น ดูเหมือนว่าจะไม่มีการสร้างการเชื่อมต่อ ความผิดฉันเอง.
Score:0
ธง gl

ปรากฎว่ารหัสนี้ ทำ สร้างการเชื่อมต่อไคลเอนต์ แต่เนื่องจากสคริปต์จะปิดทันทีที่สคริปต์ทำงานเสร็จ ปรากฏ เพื่อสร้างการเชื่อมต่อ :/

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา