ฉันเพิ่งติดตั้ง XAMPP ครั้งใหม่ เมื่อเปิด PHPMyAdmin ครั้งแรกฉันสังเกตว่ามันช้ามาก มันไม่สมเหตุสมผลที่ localhost ควรใช้เวลาเกือบ 5 วินาทีเพื่อให้ทุกหน้าเปิด ฉันทำกรณีทดสอบขนาดเล็กเพื่อเปลี่ยนตำหนิจาก PHPMyAdmin:
$con = new PDO("mysql:host=localhost;dbname=mysql", "root", "");
$statement = $con->query('SELECT host,user,password FROM user;');
$users = $statement->fetchAll(PDO::FETCH_ASSOC);
สคริปต์ด้านบนใช้เวลาในการรันประมาณ 3 วินาที (แม้ว่าจะใช้เวลาในการโหลดมากกว่า 8 วินาทีในครั้งแรกที่ฉันเรียกใช้)
จากนั้นเพื่อตรวจสอบว่ามันเป็นความผิดของ PDO ที่ฉันพยายามใช้mysql_connect
แทน:
$con = mysql_connect("localhost", "root", "");
mysql_select_db("mysql", $con);
$result = mysql_query('SELECT host,user,password FROM user;');
ใช้เวลานานเท่าที่จะเสร็จสิ้น
ฉันคิดว่ามันเป็นความผิดของ PHP ในตอนแรก แต่โค้ด PHP และไฟล์สแตติกจะให้บริการปลากระพงกว่าฉันสามารถคลิกรีเฟรช ฉันทดสอบ PHP ด้วยการรันสคริปต์เล็ก ๆ นี้:
header("Content-Type: text/plain");
for($i = 0; $i < 5000; $i++)
{
echo sha1(rand()) . "\n";
}
การsha1
คำนวณ5,000 ครั้งและหน้าเว็บยังคงปรากฏเป็น Snappier มากกว่าที่ฉันสามารถรีเฟรชหน้าต่างได้
จากนั้นฉันก็พบว่ามันเป็นความผิดของ MySQL แต่อีกครั้งไม่ได้ทำการทดสอบมากนักเพื่อที่จะทราบว่า MySQL นั้นทำงานได้เร็วกว่าที่ฉันต้องการ การใช้ไคลเอนต์ MySQL CLI ผู้ใช้เลือกคิวรี่ไม่ต้องใช้เวลาในการวัด - ทำก่อนที่ฉันจะปล่อยให้คีย์ส่งคืนขึ้นมา
ปัญหาต้องเชื่อมต่อกับ PHP กับ MySQL - เท่าที่ฉันสามารถให้เหตุผลได้ ฉันสามารถค้นหาสิ่งต่าง ๆ เกี่ยวกับ PHP ช้าหรือ MySQL ช้า แต่ไม่มีอะไรเกี่ยวกับ PHP + MySQL ช้ามาก
ขอบคุณทุกคนที่สามารถช่วยฉันแก้ปัญหานี้ได้!
ฉันใช้ XAMPP 1.8.0 สำหรับ win32 ( ลิงก์ดาวน์โหลด )
รุ่น PHP: 5.4.4
รุ่น MySQL: 14.14
แก้ไข: หลังจากเวลามันกลายเป็นฟังก์ชั่นการเชื่อมต่อที่ใช้เวลานานมาก:
$time = microtime(true);
$con = mysql_connect("localhost", "root", "");
mysql_select_db("mysql", $con);
$con_time = microtime(true);
$result = mysql_query('SELECT host,user,password FROM user;');
$sel_time = microtime(true);
printf("Connect time: %f\nQuery time: %f\n",
$con_time-$time,
$sel_time-$con_time);
เอาท์พุท:
เชื่อมต่อเวลา: 1.006148 เวลาสอบถาม: 0.000247
อะไรทำให้ PHP ใช้เวลาในการเชื่อมต่อกับฐานข้อมูลมาก? ไคลเอนต์ CLI, HeidiSQL และ MySQL สามารถปรับแต่งการเชื่อมต่อได้ทันที