Saya baru saja menginstal XAMPP. Ketika pertama kali membuka PHPMyAdmin saya perhatikan itu sangat lambat. Tidak masuk akal bahwa pada localhost itu harus memakan waktu hampir 5 detik untuk setiap halaman untuk dibuka. Saya membuat test case kecil untuk mengalihkan kesalahan dari 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);
Script di atas hanya membutuhkan waktu sekitar 3 detik untuk dijalankan (walaupun butuh lebih dekat hingga 8 detik untuk memuat pertama kali saya menjalankannya.)
Kemudian untuk memeriksa apakah itu kesalahan PDO, saya mencoba menggunakan mysql_connect
:
$con = mysql_connect("localhost", "root", "");
mysql_select_db("mysql", $con);
$result = mysql_query('SELECT host,user,password FROM user;');
Membutuhkan waktu yang sangat lama untuk menyelesaikannya.
Saya pikir itu kesalahan PHP pada awalnya, tetapi kode PHP dan file statis dilayani lebih cepat daripada yang saya bisa klik refresh. Saya menguji PHP dengan menjalankan skrip kecil ini:
header("Content-Type: text/plain");
for($i = 0; $i < 5000; $i++)
{
echo sha1(rand()) . "\n";
}
5000 sha1
perhitungan dan halaman ini masih ditampilkan snappier daripada saya dapat menyegarkan jendela saya.
Lalu saya pikir itu salah MySQL. Tetapi sekali lagi, tidak perlu banyak pengujian untuk mengetahui bahwa MySQL bekerja lebih cepat daripada yang saya butuhkan. Menggunakan klien MySQL CLI permintaan pilih pengguna bahkan tidak mengambil waktu yang dapat diukur - itu dilakukan sebelum saya bahkan membiarkan kunci kembali.
Masalahnya harus koneksi PHP ke MySQL - itu sejauh yang saya bisa alasan. Saya dapat menemukan banyak hal tentang PHP yang lambat atau MySQL yang lambat, tetapi tidak ada tentang PHP + MySQL yang sangat lambat.
Terima kasih kepada siapa saja yang dapat membantu saya menyelesaikan masalah ini!
Saya menggunakan XAMPP 1.8.0 untuk win32 ( tautan Unduh )
Versi PHP: 5.4.4
Versi MySQL: 14.14
EDIT: Setelah penghitungan waktu, ternyata itu adalah fungsi koneksi yang memakan waktu begitu lama:
$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);
Keluaran:
Waktu koneksi: 1,006148 Waktu permintaan: 0,000247
Apa yang bisa menyebabkan PHP menghabiskan banyak waktu melakukan koneksi ke database? Klien CLI, HeidiSQL dan meja kerja MySQL terhubung secara instan