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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимизация под FCGI 
:(
    Опции темы
frenkys
Дата 20.3.2006, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

#!/usr/bin/perl -w

require 'cont3.pl';

print header(-charset=>'Windows-1251');

#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

$url = $ENV{'SCRIPT_NAME'};    

print "<html><head><meta http-equiv=REFRESH content=60; URL=$url></head>";

db_connect();

$sth = $dbh->prepare ("SELECT count(name) FROM fd_online");
$sth->execute() || quit();
   
    while (@data = $sth->fetchrow_array()) {
          $l=$data[0] || 0;
          print "<body><center><FONT face=Verdana, Arial, Helvetica, sans-serif size=1>online:$l</font></center>";
            
    }
    
@data=();
$dbh->disconnect;
print "</body></html>";



Покажите плиз на примере этого кода как рационально оптимизировать под FCGI

--------------------
 niva[frenky]
PM MAIL WWW   Вверх
nitr
Дата 20.3.2006, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



а где use smile


--------------------
PM   Вверх
frenkys
Дата 20.3.2006, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



cont3.pl
Код

use CGI qw(:standard);
use DBI;
use Compress::Zlib;
use Fcntl qw(:flock);
 
$|=1;


#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
sub get_lock {
my $name=shift || 'default';
open($name, ">$name.sem") ;
flock($name,LOCK_EX) || "Cant block the file $name:$!";

sub relase_lock {
$name=shift || 'default';
close($name);
}
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
sub quit
{
my $url = $ENV{'SCRIPT_NAME'};
my $erorr="$DBI::errstr <br>\n";

  get_lock('litlelog.txt');
   open(AD ,">>litlelog.txt") || die "open file error";
   
   print AD "$url\n";
   print AD @_,"\n" if @_;
   print AD "$erorr\n";
   
   close(AD);
   relase_lock('litlelog.txt');
 }
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
sub db_connect
{
$dbh = DBI->connect("DBI:mysql:ddd:localhost","ddd","ddd") || die "ccc";
    return $dbh;
}
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
sub block_write  
{
my($word)=@_;
my $abnbanner;
$abnbanner=<<PAGE_HERE;  
<body background=../../img/color0.gif>
<table width=120 border=0 cellspacing=0 cellpadding=0 align=center>
<tr><td ><img src=../../img/error.gif width=120 height=10></td></tr>
<tr>
<td bgcolor=white height=50><div align=center>
<FONT face="Verdana, Arial, Helvetica, sans-serif" size=1>$word</font>
<a href=addevents.pl><FONT face=Verdana, Arial, Helvetica, sans-serif size=1 color=blue> эрчрф</font></a><br>
</div>
<br></td></tr><br></tr>
<tr><td ><img src=../img/niz.gif width=120 height=10></td></tr>
</table><br><br>
</body>
PAGE_HERE
return($abnbanner);
}
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@222
sub bwrite  
{
my($word)=@_;
my $abnbanner;
$abnbanner=header(-charset=>'Windows-1251');
$abnbanner.="<FONT face=Verdana, Arial, Helvetica, sans-serif size=1>$word</font>";
return($abnbanner);
}
#@@@@@@@@@@@@@@@@@@@@@22
sub bwrite2  
{my($word)=@_;

my $abnbanner;
print header(-charset=>'Windows-1251');

print "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../css.css\">$word";
exit 0;
}


#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@22
sub gzip
{

if(($ENV{HTTP_ACCEPT_ENCODING} || '') =~ /gzip/){
        
        
                $a = Compress::Zlib::memGzip($a);
                print "Content-Encoding: gzip\n";}

print header(-charset=>'Windows-1251')
}

1;

--------------------
 niva[frenky]
PM MAIL WWW   Вверх
nitr
Дата 21.3.2006, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



Обзови по-другому smile процедура gzip в модуле Compress::Zlib уже есть


--------------------
PM   Вверх
frenkys
Дата 21.3.2006, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



это понятно но вопрос не в этом.


Есть ли какето основные приемы при написании FCGI ?


например
1) коннект и дисконнект к базе надо делать в цикле "while (FCGI::accept >= 0) {}" (далее просто цикл) или вне его как будет оптимальней?
2) процедурки писать в цикле или вне его?


И вообще все что до цикла оно каждый раз компилиться или висит тоже в памяти?
--------------------
 niva[frenky]
PM MAIL WWW   Вверх
sharq
Дата 21.3.2006, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



frenkys, попробуй, поэкспериментируй.

Функции выноси из цикла, а вызовы, должны быть в цикле.
Про коннект - посмотри есть метод connect_cached.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
nitr
Дата 21.3.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



Русская дока по FCGI есть smile ?


--------------------
PM   Вверх
sharq
Дата 22.3.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



Есть англо-русский словарик! smile
И вообще на русском очень мало, переводов нет, поэтому я предложил вести в совместном проекте - раздел как документация!

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
frenkys
Дата 25.3.2006, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А как параметры передавать?
--------------------
 niva[frenky]
PM MAIL WWW   Вверх
frenkys
Дата 25.3.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вобщем результат таков : ЛЮДИ не ставьте себе FCGI он глючный просто мама дорогая а вот последнюю версию CGI::Fast можно с чистой совестью ставить - там исправлен прикол с параметрами тоесть они теперь работают как и в обчном цги.


--------------------
 niva[frenky]
PM MAIL WWW   Вверх
sharq
Дата 25.3.2006, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



frenkys, с таким стилем написанием скриптов, тяжело что-то оптимизировать, чтобы это работало быстро!
Прочитай perldoc perlstyle, полистай пару книг по perl, только не "самиздат", не используй require, если тебе нужно подключить функции, use strict - всегда, не смотри чужие бесплатные скрипты, они сбивают с толку и т. д.
И только потом подумай о fcgi.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
frenkys
Дата 25.3.2006, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



В баране написано что лучше использовать require чем do
--------------------
 niva[frenky]
PM MAIL WWW   Вверх
sharq
Дата 26.3.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



frenkys,
Цитата(frenkys @ 25.3.2006, 23:21 Найти цитируемый пост)
В баране написано что лучше использовать require чем do

для каких целей? разбирись почему?

используй модули или пакеты и подключай их через use.
а если тебе нужна какая-нибудь доп. инфа, например, конфигурационные данные, то тут уж использую require или do!

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
frenkys
Дата 26.3.2006, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А где можно читнуть про это?
--------------------
 niva[frenky]
PM MAIL WWW   Вверх
sharq
Дата 27.3.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



frenkys, самый простой и верный способ - это стандартная документация и никакие книги не нужны smile

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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