PHP занимает дополнительную 1 секунду, чтобы получить каждый набор результатов из Sphinx (!!)

Я столкнулся со странной проблемой... Вчера вечером все работало нормально, когда я кодировал эту чертову штуку, но я переустановил WAMP на своем локальном сервере разработки, и теперь у меня проблемы.

Я пытаюсь получить результаты от Sphinx через API PHP. Я просто выполняю самые простые запросы в качестве теста...

    $searchtest = Sphinx::factory();
    $results = $searchtest->Query('');

И $results содержит результаты sphinx, как и ожидалось.

...
[total] => 1000
[total_found] => 30312
[time] => 0.004

Однако, когда я профилирую этот небольшой фрагмент кода, он говорит мне, что PHP требуется лишняя секунда для обработки запроса!

test (1) - 1.066703 s

Проблема усугубляется в моем производственном коде, который выполняет несколько поисков Sphinx, вчера... все работало нормально, и каждый поиск занимал 0,004 секунды (или такое же небольшое количество времени), но сегодня странице требуется несколько секунд, чтобы выполнить весь поиск запросы! (это на изолированном сервере разработки, поэтому проблем с трафиком нет)

results (1) - 1.046128 s
sidebar_data (1) - 10.388812 s
featured (1) - 1.034211 s

Ответ на каждый отдельный запрос к демону Sphinx занимает дополнительную секунду! (sidebar_data попадает на поисковый сервер 10 раз)

Что здесь происходит? Я потратил кучу времени, пытаясь понять это, и я в тупике. Я даже переустановил Sphinx с нуля. Поскольку сам sphinx сообщает о [time] => 0.004 быстром времени доступа, проблема связана с PHP?

Что мне делать, чтобы диагностировать проблему?

Редактировать: я посмотрел на вывод searchd --console, конечно же, он подтверждает, что поисковые запросы выполняются довольно быстро, но если вы посмотрите на время, они выполняются ок. один в секунду... PHP как-то вызывает некоторую задержку (??)

[Sun May  8 09:57:29.923 2011] 0.012 sec [all/1/ext 15039 (0,25)] [main]
[Sun May  8 09:57:30.996 2011] 0.020 sec [all/1/rel 30 (0,20) @city] [main]
[Sun May  8 09:57:32.034 2011] 0.016 sec [all/1/rel 50 (0,20) @make] [main]
[Sun May  8 09:57:33.061 2011] 0.015 sec [all/1/rel 15 (0,20) @style] [main]
[Sun May  8 09:57:34.099 2011] 0.017 sec [all/1/rel 25 (0,20) @colour] [main]
[Sun May  8 09:57:35.122 2011] 0.009 sec [all/1/rel 1 (0,20) @field] [main]
[Sun May  8 09:57:36.145 2011] 0.011 sec [all/2/rel 1 (0,20) @field] [main]
[Sun May  8 09:57:37.174 2011] 0.010 sec [all/2/rel 1 (0,20) @field] [main]
[Sun May  8 09:57:38.187 2011] 0.003 sec [all/2/rel 431 (0,20)] [main]
[Sun May  8 09:57:39.240 2011] 0.005 sec [all/2/rel 12627 (0,20)] [main]
[Sun May  8 09:57:40.292 2011] 0.005 sec [all/2/rel 13021 (0,20)] [main]
[Sun May  8 09:57:41.343 2011] 0.001 sec [all/3/rel 200 (0,20)] [main]

person MeatFlavourDev    schedule 08.05.2011    source источник
comment
Я вернулся к Apache 2.2.11 с Apache 2.2.17, PHP 5.3.0 с PHP 5.3.3 и MySQL 5.1.36 с Mysql 5.1.53, и проблема устранена. Может ли быть проблема с PHP 5.3.3 или это проблема с самим WAMP 2.1d (x64)?   -  person MeatFlavourDev    schedule 08.05.2011
comment
Мне было бы интересно, если бы кто-нибудь мог объяснить это поведение.   -  person MeatFlavourDev    schedule 08.05.2011


Ответы (1)


На первый взгляд я бы предположил, что может быть связана какая-то проблема с разрешением DNS, но похоже, что вы работаете searchd на том же хосте, что и PHP

Вместо того, чтобы пытаться угадать, что вызывает это, я бы рекомендовал профилировать PHP-код, работающий на машине. Я бы установил xdebug, включил профилирование, а затем проанализировал вывод в webcachegrind. Он должен быть в состоянии указать вам, какие функции работают медленно, и дать вам лучшее представление о том, что не так.

person James C    schedule 08.05.2011
comment
Что ж, это подтвердило то, что я догадался... fsockopen вызывает проблемы.. Я предполагаю, что он установлен на тайм-аут в 1 секунду, и соединение не закрывается по какой-либо причине.. К сожалению, я понятия не имею, как решить эту проблему. проблема. Ошибка API? php::fsockopen Invocation Count: 12 Self Cost: 12081ms // Called from Sphinx_Client->_Connect @ 341 - person MeatFlavourDev; 08.05.2011
comment
Интересно, что мое соединение с mysql также имеет отставание в 1 секунду... php::mysql_connect Invocation Count: 1 Self Cost: 1027ms // Called from Kohana_Database_MySQL->connect @ 56 В этот момент я запутался и запутался. =/ вздох - person MeatFlavourDev; 08.05.2011
comment
Попробуйте использовать IP-адрес вместо любого имени хоста. Если это ускорит работу, значит, что-то не так с вашим DNS. Отпишитесь, как у вас дела. - person James C; 08.05.2011