Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Увеличить скорость работы скрипта
 
 автор: marcus   (22.06.2007 в 22:42)   письмо автору
 
 

Всем привет :)

что может обеспечить большую производительность кода по времени при запросе к БД на чтение (в базе поиск за десятитысячные от секунды идет)? проблема во времени выполнения самомго скрипта и пересылки инфы. На данный момент есть php скрипт, который обрабатывается сервером в среднем за 0,5 сек, что много (нужно 0,05 и меньше). Цифры реальные. как можно уменьшить время отклика сервера программно? поможет ли что-то вроде CGI или FastCGI?

p.s. из скрипта выжато вроде все возможное

   
 
 автор: bronenos   (22.06.2007 в 22:58)   письмо автору
 
   для: marcus   (22.06.2007 в 22:42)
 

какие запросы, сколько запросов, много ли циклов и есть ли вложенные?

   
 
 автор: marcus   (23.06.2007 в 15:23)   письмо автору
 
   для: 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. Фишка в том, что грузится допустим этот скрипт один раз в память сервака и бултыхается там. При повторном вызове скрипта на исполнение делается копия и не приходится ждать завершения данного скрипта. Только вот вопрос... как его подключить....

   
 
 автор: bronenos   (23.06.2007 в 16:56)   письмо автору
 
   для: marcus   (23.06.2007 в 15:23)
 

сколько записей в таблице

   
 
 автор: marcus   (23.06.2007 в 17:05)   письмо автору
 
   для: bronenos   (23.06.2007 в 16:56)
 

700 000 рядов

   
 
 автор: bronenos   (23.06.2007 в 18:07)   письмо автору
 
   для: marcus   (23.06.2007 в 17:05)
 

и все нужны?
или часть можно поместить в архив?

   
 
 автор: marcus   (23.06.2007 в 22:06)   письмо автору
 
   для: bronenos   (23.06.2007 в 18:07)
 

да, нужны все, т.к. идет постоянный запрос из поисковиков. например efind.ru

   
 
 автор: Unkind   (23.06.2007 в 18:17)   письмо автору
 
   для: marcus   (23.06.2007 в 17:05)
 

Попробуйте поставить индекс на поле "name".

   
 
 автор: marcus   (23.06.2007 в 22:09)   письмо автору
 
   для: Unkind   (23.06.2007 в 18:17)
 

сам поиск по базе чуть ли не мгновенный. Проиндексирована по связке id,name (что существенно увеличивает занимаемое место). Но дело в том, что запрос простой и находит нужные ряды где-то за 0,0008 сек, что очень даже хорошо.
Потеря времени идет на пересылке инфы тому кто запрашивал и исполнении самого скрипта

хостер - agava

   
 
 автор: Shorr Kan   (23.06.2007 в 23:04)   письмо автору
 
   для: marcus   (23.06.2007 в 22:09)
 

Если я вас правильно понял, то это проблема соединения ищущего. Тот кто ищет - если на модеме - всегда будет долго ожидать. Ваш скрипт тут бессилен.

   
 
 автор: marcus   (24.06.2007 в 00:55)   письмо автору
 
   для: Shorr Kan   (23.06.2007 в 23:04)
 

не совсем так (наверное :)). Система вот какая: есть электронный поисковик, к нему подключены склады с товарами. Кто-то заходит на этот поисковик и вносит в поле поиска запись ->ищет что ему надо. Этот поисковик подает запросы на все подключенные к нему склады. Кто первый откликнулся, тот и первый (верхний) по позициям вывода товаров. Это можно увидеть на efind.ru если ввести например 0-00320 (там даже временная шкала есть по загрузке)

   
 
 автор: cheops   (24.06.2007 в 12:08)   письмо автору
 
   для: marcus   (23.06.2007 в 17:05)
 

>700 000 рядов
Следует кэшировать результаты запросов, увеличивать объём, выделенный под кэш и желательно на выделенном хосте.

   
 
 автор: marcus   (24.06.2007 в 12:42)   письмо автору
 
   для: cheops   (24.06.2007 в 12:08)
 

Спасибо. Т.е. брать в аренду или покупать полностью и там его настраивать под свои нужды. Не подскажете на что в первую очередь следует обращать внимание при покупке/аренде сервера (по его конфигурации)?

   
 
 автор: cheops   (24.06.2007 в 14:26)   письмо автору
 
   для: marcus   (24.06.2007 в 12:42)
 

В превую очередь на оперативную память, чем больше её будет, тем больше вы сможете отвести её для кэша MySQL (т.е. больше индексов смогут находиться в оперативной памяти, а не на жёстком диске). Следует ориентироваться минимум на 2 Гб.

   
 
 автор: marcus   (24.06.2007 в 15:03)   письмо автору
 
   для: cheops   (24.06.2007 в 14:26)
 

Понятно, спасибо

   
 
 автор: marcus   (24.06.2007 в 15:05)   письмо автору
 
   для: marcus   (22.06.2007 в 22:42)
 

думаю, тема исчерпана. Большое всем спасибо за активное участие ;)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования