방금 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";
}
5000 sha1
계산 및 페이지가 여전히 창을 새로 고칠 수있는 것보다 더 빠르게 표시됩니다.
그런 다음 MySQL의 결함이라고 생각했습니다. 그러나 MySQL이 내가 필요로하는 것보다 빠르게 작동한다는 것을 알기 위해 많은 테스트를하지 않았습니다. MySQL CLI 클라이언트를 사용하면 사용자 선택 쿼리를 수행하는 데 시간이 오래 걸리지 않습니다. 리턴 키를 올리기 전에 수행됩니다.
문제는 PHP가 MySQL에 연결되어 있어야합니다. 내가 추론 할 수있는 한. PHP는 느리거나 MySQL은 느리다는 것을 알 수 있지만 PHP + MySQL은 매우 느립니다.
이 문제를 해결하도록 도와 줄 수있는 사람에게 감사합니다!
win32에 XAMPP 1.8.0을 사용하고 있습니다 ( 다운로드 링크 )
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 워크 벤치가 즉시 연결