Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Время выполнения запроса к БД 3 сек. (!) 
:(
    Опции темы
forumuser
Дата 24.3.2003, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 24.3.2003

Репутация: нет
Всего: нет



Есть скрипт, который выдает сумму скачанного трафика ориентируясь по IP посетителя. Так вот если выполнять запрос даже лишь по одной дате, время выполнения составляет 3,минимум 2, секунды! Это нормально или я что-то криво сделал.

#!/usr/bin/perl
use DBI;
use CGI qw(:all);
###########################################################
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$hour="0".$hour if length($hour)==1;
$min="0".$min if length($min)==1;
$sec="0".$sec if length($sec)==1;
$first_time = $hour.$min.$sec;
###########################################################
my $dbh = DBI->connect("DBI:mysql:database=name;host=xxx.xxx.xxx.xxx","user", "pass") || die $DBI::errstr;
###########################################################
my $ip=$ENV{'REMOTE_ADDR'};#определение ip адреса
$date1=param('date1');#присвоение переменной первой даты из формы
$date2=param('date2');#присвоение переменной второй даты из формы
###########################################################
my $ID=$dbh->prepare("SELECT * FROM filter_ip WHERE IP_address='$ip'");
$ID->execute;
my $viv=$ID->fetchrow_hashref();
my $id=$viv->{"Filter_ID"};
###########################################################
my $IB=$dbh->prepare("SELECT * FROM traffic WHERE ts BETWEEN '$date1' AND '$date2' AND filterid='$id'");
$IB->execute;
my $iv=$IB->fetchrow_hashref();
my $summa=$iv->{"recv"};
###########################################################
$shotsumma=($summa/1024)/1024;
$shotsumma=sprintf "%.3f",$shotsumma;
###########################################################
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$hour="0".$hour if length($hour)==1;
$min="0".$min if length($min)==1;
$sec="0".$sec if length($sec)==1;
$second_time = $hour.$min.$sec;
$end_time = $second_time - $first_time;
###########################################################
print "<html><head><title>Результат подсчета</title></head><body>";
print "<table align=center border=1>";
print "<tr><td><font size=4>За период с <b>$date1</b> по <b>$date2</b> скачано <b>$shotsumma</b> Мб (=$summa байт) </font></tr></td>";
print "<tr align=center><td><font size=4>Ваш IP адрес <b>$ip</b></font></td></tr>";
print "<tr align=center><td>Время выполнения запроса $end_time секунд</td></tr>";
print "</table>";
print "<table align=center border=0>";
print "<tr><td>";
print "<FORM ACTION='/cgi-bin/forma_traffic.pl' align=center>";
print "<INPUT TYPE=submit VALUE='Назад'>";
print "</tr></td>";
print "</table>";
print "</body></html>";
###########################################################
$dbh-> disconnect();
###########################################################
Ось на которой стоит MySQL NT4.

PM MAIL   Вверх
kronon
Дата 25.3.2003, 04:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.3.2003

Репутация: нет
Всего: нет



Вряд ли это ускорит, просто бросилось в глаза:
вместо

print " html code ";
print " html code ";
...........................
print " html code ";

лучше пиши для уменьшения кода

print <<"abc";
html code
.....
....
html code
abc; # abc - любое сочетание букв

ещё
ты не забыл сделать индексы по используемым в запросах полям, особенно по датам?

PM MAIL   Вверх
forumuser
Дата 25.3.2003, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 24.3.2003

Репутация: нет
Всего: нет



Ну ка, ну ка, поподробнее по поводу индексов, может я ничего об этом не знаю! Что это такое?
PM MAIL   Вверх
HalkaR
Дата 31.3.2003, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



1)Если это сервер, то возможно он перегружен и скрипт действительно тормозит.
2)Попробуй поставить dissconnect сразу после fetch
3)Ns грузишь весь! модуль CGI и не где им не пользуешься?! Не понял...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0899 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.