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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mod_perl2 DBD::MySQL STOP 
:(
    Опции темы
gcc
Дата 7.9.2009, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



MyISAM

1) если есть на странице несколько SQL запросов не оптимизированных, INSERT UPDATE, и если пользователь нажмет кпонку STOP в браузере, то возможно что часть SQL запросов не выполниться? 

вот есть ссылка, но я пишу в catalyst и не понял что мне нужно добавить?
http://www.yaldex.com/perl-tutorial-3/0596...p-6-sect-9.html

(как тут сделать обязательно ли форкать?)


2) вот эти запросы, возможно там можно как-то оптимизировать, но что-то не понимаю...
(оптимизировать delete можно в один запрос, но там где идет SELECT и UNION и DELETE - я не знаю как там сделать)
(сайт не нагруженный, сильную оптимизацию я не рассматиривал, она мне не нужна)

например:
Код


  my $sql_all = 'SELECT id_se
                              FROM section
                            WHERE id_un = '.$args[0];

     my $sth2 = $dbh->prepare($sql_all);
        $sth2->execute();  
        
        
    while ( my $id = $sth2->fetchrow_arrayref() ) {    

        my $sql_par = 'SELECT id_se
                              FROM section
                            WHERE
                    parent_se_id = '.$args[0].'
                      
                    UNION
                      
                    SELECT t1.id_se
                    FROM
                    section t1 JOIN section t2
             ON t1.parent_se_id = t2.id_se
                    WHERE
              t2.parent_se_id = '.$args[0];
        
     my $sth = $dbh->prepare($sql_par);
        $sth->execute();          
            
            while ( my $id = $sth->fetchrow_arrayref() ) {    
    
       
             $dbh->do( 'DELETE from section                         
                     WHERE id_se = '.$id->[0],
                 undef, undef );        
       
             $dbh->do( 'DELETE from comment                         
                     WHERE id_se = '.$id->[0],
                 undef, undef );
                 
             $dbh->do( 'DELETE from content                         
                     WHERE id_se = '.$id->[0],
                 undef, undef );                        
       
                }
                
           $sth->finish(); 
         

    }
         $sth2->finish(); 


            $dbh->do(
                qq{DELETE FROM  users                         
                      WHERE id = ? },
                undef, $args[0]
            );

            $dbh->do(
                qq{DELETE FROM  user_roles                        
                      WHERE user_id = ? },
                undef, $args[0]
            );

            $dbh->do(
                qq{DELETE FROM  content                         
                      WHERE id_un = ? },
                undef, $args[0]
            );

            $dbh->do(
                qq{DELETE FROM  comment                         
                      WHERE id_un = ? },
                undef, $args[0]
            );

            $dbh->do(
                qq{DELETE FROM  section                         
                      WHERE id_un = ? },
                undef, $args[0]
            );







мне в прошлый раз исправили:
(но тут другое по легче)

Код

                   'SELECT  dfgdg
                              FROM section
                            WHERE    id_se = ?
                            LIMIT 1';
                SELECT id_se
                              FROM section
                            WHERE
                    parent_se_id = ?
                      
                    UNION
                      
                    SELECT t1.id_se
                    FROM
                    section t1 JOIN section t2
             ON t1.parent_se_id = t2.id_se
                    WHERE
              t2.parent_se_id = ?

           # перебор всего, более 100 значение
            while ( ) {    

            'UPDATE section
                  SET '.$args[1].' = '.$section->[0].' 
                WHERE id_se = '.$email->[0]  , undef, undef );       
               } 


на

Код

UPDATE section AS t4 LEFT JOIN section t2 ON t4.parent_se_id = t2.id_se
SET t4.active_se = 1 - t4.active_se
WHERE t2.parent_se_id = 54 or t4.parent_se_id = 54 



 

Это сообщение отредактировал(а) gcc - 7.9.2009, 13:19
PM WWW ICQ Skype GTalk Jabber   Вверх
sir_nuf_nuf
Дата 7.9.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



InnoDB & transactions ? (это правильное решение)

Кстати а вы не разбирались как собственно юзер может остановить скрипт ?
Ну нажимает он стоп, ну закрывается соединение с сервером и ?
Пока сервер не начнет писать в закрытый сокет он по идее и не должен узнать о том, что соединение закрыто.

Как вариант - делайте вывод данных в конце (у вас ведь шаблонизатор ?) - тогда запросы отработают (должны) не зависимо от соединения.

P.S. это все измыщления. Если вы проверите их - будет круто.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
gcc
Дата 8.9.2009, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



1) я почему-то выбрал MyISAM из самого начала, если переходить на innoDB там в приципе не очень много изменить для transactions и еще внешние ключи referens которые сами все решат...

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

говорят что innoDB грузит сервер как только более  2Гб таблица занимает (я с этим не сталкивался, но у меня MyISAM есть 1.5Гб)

2) я вот где-то видел, что mod_perl и FastCGI запускают все скрипты форкая... выполнятся в любом случае

в общем ладно пускай как есть...
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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