на самом деле его немного сложно:
summary: соединение с БД происходит очень медленно.
рендеринг страницы занимает около 10 секунд, но последний оператор на странице является эхом, и я могу видеть его вывод, пока страница загружается в firefox (IE такой же). в google chrome вывод становится видимым только при завершении загрузки. время загрузки примерно одинаково во всех браузерах.
при отладке я узнал, что это связано с подключением к БД, которое создает проблему. БД находилась на другой машине. для дальнейшего отладки. я развернул БД на моем локальном компьютере .. так что теперь соединение с БД находится на уровне 127.0.0.1, но подключение все еще занимает много времени.
это означает, что проблема связана с APACHE / PHP, а не с mysql. но затем я развернул свой код на другом компьютере, который подключается к БД удаленно. И все кажется прекрасным.
в основном приложение использует пару mod_rewrite .. но я удалил все файлы .htaccess, и проблема медленной связи остается.
я установил еще один APACHE на моем компьютере и использовал настройки по умолчанию. соединение все еще было очень медленным.
Я добавил следующие инструкции для измерения времени выполнения
$stime = microtime(); $stime = explode(" ",$stime); $stime = $stime[1] + $stime[0]; // my code -- it involves connection to DB $mtime = microtime(); $mtime = explode(" ",$mtime); $mtime = $mtime[1] + $mtime[0]; $totaltime = ($mtime - $stime); echo $totaltime;
выход 0.0631899833679
но панель Firebug Net показывает общее время загрузки 10-11 секунд. то же самое происходит с Google Chrome
я попытался отключить брандмауэр Windows .. связь все еще медленная
и я просто не могу найти причину .. Я пробовал несколько серверов БД .. несколько апачей .. ничто, кажется, не работает .. любая идея о том, что может быть проблемой?
[редактировать]
пожалуйста, просмотрите раздел комментариев для получения дополнительной информации. на самом деле я думаю, что я приближаюсь к решению. в основном я работаю над разработкой моей собственной структуры, которая включает переписывание url через файлы .htaccess. Я добавил несколько файлов css и js, и я заметил, что несколько запросов отправляются для этих файлов без каких-либо веских причин (в firefox). Я думаю, что проблема связана с заголовком CONTENT-LENGTH, поскольку firefox не получает этот заголовок, поэтому он продолжает ждать содержимого (и может быть, тогда есть тайм-аут). Это имеет какое-либо отношение к Transfer-Encoding: chunked?
Я опаздываю на вечеринку, но у меня есть решение этой проблемы для будущих посетителей этой страницы.
Просто измените:
$link = mysqli_connect('localhost','username','password','db');
чтобы:
$link = mysqli_connect('127.0.0.1','username','password','db');
Это повысит скорость на 1000% на локальном хосте.
Во-первых, забудьте о redherrings, php подключается непосредственно к mysql, он не использует apache. .htaccess также не связан.
Можете ли вы предоставить код того, как вы подключаетесь к db? конечно мы не хотим ваш пароль.
Можете ли вы просто подключиться к части db?
Какие запросы вы используете?
Время каждого из них. Вы должны изолировать фактическую строку кода, вызывающую проблему.
ОКРУГ КОЛУМБИЯ
fast-cgi исправил проблему .. благодаря srisa .. просто изменил apache для запуска php-файлов через fast-cgi