|
|
|
| Всем привет :)
что может обеспечить большую производительность кода по времени при запросе к БД на чтение (в базе поиск за десятитысячные от секунды идет)? проблема во времени выполнения самомго скрипта и пересылки инфы. На данный момент есть php скрипт, который обрабатывается сервером в среднем за 0,5 сек, что много (нужно 0,05 и меньше). Цифры реальные. как можно уменьшить время отклика сервера программно? поможет ли что-то вроде CGI или FastCGI?
p.s. из скрипта выжато вроде все возможное | |
|
|
|
|
|
|
|
для: marcus
(22.06.2007 в 22:42)
| | какие запросы, сколько запросов, много ли циклов и есть ли вложенные? | |
|
|
|
|
|
|
|
для: bronenos
(22.06.2007 в 22:58)
| |
<?php
$s = ltrim($_GET['search']);
if(substr_count($s,"%")>1){echo '<data />'; exit();}
@mysql_connect('localhost','else','else');
echo '<data>';
$r = mysql_db_query('else', 'select * from else where name like "'.$s.'%" limit 20');
while($rw = mysql_fetch_array($r))
{
echo '<line><part>'.$rw['n'].'</part><mfg>'.$rw['dev'].'</mfg><stock>';
if(!empty($rw['on'])) echo $rw['on'].' ('.$rw['pos'].' нед)';
else echo $rw['pos'].' нед';
echo '</stock><instock>'.$rw['ins'].'</instock><p3>'.$rw['price'].'</p3><p2>'.$rw['makep'].'</p2></line>';
}
echo '</data>';
mysql_free_result($r);
?>
|
вот и весь скрипт.
я тут надыбал инфу, что нужно подключать FastCGI. Фишка в том, что грузится допустим этот скрипт один раз в память сервака и бултыхается там. При повторном вызове скрипта на исполнение делается копия и не приходится ждать завершения данного скрипта. Только вот вопрос... как его подключить.... | |
|
|
|
|
|
|
|
для: marcus
(23.06.2007 в 15:23)
| | сколько записей в таблице | |
|
|
|
|
|
|
|
для: bronenos
(23.06.2007 в 16:56)
| | 700 000 рядов | |
|
|
|
|
|
|
|
для: marcus
(23.06.2007 в 17:05)
| | и все нужны?
или часть можно поместить в архив? | |
|
|
|
|
|
|
|
для: bronenos
(23.06.2007 в 18:07)
| | да, нужны все, т.к. идет постоянный запрос из поисковиков. например efind.ru | |
|
|
|
|
|
|
|
для: marcus
(23.06.2007 в 17:05)
| | Попробуйте поставить индекс на поле "name". | |
|
|
|
|
|
|
|
для: Unkind
(23.06.2007 в 18:17)
| | сам поиск по базе чуть ли не мгновенный. Проиндексирована по связке id,name (что существенно увеличивает занимаемое место). Но дело в том, что запрос простой и находит нужные ряды где-то за 0,0008 сек, что очень даже хорошо.
Потеря времени идет на пересылке инфы тому кто запрашивал и исполнении самого скрипта
хостер - agava | |
|
|
|
|
|
|
|
для: marcus
(23.06.2007 в 22:09)
| | Если я вас правильно понял, то это проблема соединения ищущего. Тот кто ищет - если на модеме - всегда будет долго ожидать. Ваш скрипт тут бессилен. | |
|
|
|
|
|
|
|
для: Shorr Kan
(23.06.2007 в 23:04)
| | не совсем так (наверное :)). Система вот какая: есть электронный поисковик, к нему подключены склады с товарами. Кто-то заходит на этот поисковик и вносит в поле поиска запись ->ищет что ему надо. Этот поисковик подает запросы на все подключенные к нему склады. Кто первый откликнулся, тот и первый (верхний) по позициям вывода товаров. Это можно увидеть на efind.ru если ввести например 0-00320 (там даже временная шкала есть по загрузке) | |
|
|
|
|
|
|
|
для: marcus
(23.06.2007 в 17:05)
| | >700 000 рядов
Следует кэшировать результаты запросов, увеличивать объём, выделенный под кэш и желательно на выделенном хосте. | |
|
|
|
|
|
|
|
для: cheops
(24.06.2007 в 12:08)
| | Спасибо. Т.е. брать в аренду или покупать полностью и там его настраивать под свои нужды. Не подскажете на что в первую очередь следует обращать внимание при покупке/аренде сервера (по его конфигурации)? | |
|
|
|
|
|
|
|
для: marcus
(24.06.2007 в 12:42)
| | В превую очередь на оперативную память, чем больше её будет, тем больше вы сможете отвести её для кэша MySQL (т.е. больше индексов смогут находиться в оперативной памяти, а не на жёстком диске). Следует ориентироваться минимум на 2 Гб. | |
|
|
|
|
|
|
|
для: cheops
(24.06.2007 в 14:26)
| | Понятно, спасибо | |
|
|
|
|
|
|
|
для: marcus
(22.06.2007 в 22:42)
| | думаю, тема исчерпана. Большое всем спасибо за активное участие ;) | |
|
|
|