Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > прекратить выполнение сценария


Автор: ежик 28.6.2006, 06:11
если мы имеем сценарий написаный на mod_perl2

вопрос вот вчем: как мне остановить выполнение сценария в нужном мне месте

Код

exit()

эта фишка не канает и вооще применять ее в mod_perl низяяяя.
 smile  

Автор: djkostya 28.6.2006, 08:11
А почему нельзя выполнять в скриптах.....?


Если все переменные до этого были объявлены......? 

Автор: sharq 28.6.2006, 09:22
ежик, действительно, exit использовать не следует.
А как на счет die?

 smile  

Автор: ежик 29.6.2006, 04:47
потомучто mod_perl перехватывает exit();
а die нерекомендуется может вылететь весь перл 

Автор: djkostya 29.6.2006, 07:43
ежик, Так скажи как ты решил проблему дай пример кода а то я чувствую скоро мне это тоже понадобиться 

Автор: sharq 29.6.2006, 09:55
ежик, 
Цитата(ежик @  29.6.2006,  05:47 Найти цитируемый пост)
потомучто mod_perl перехватывает exit();
а die нерекомендуется может вылететь весь перл  

скажи, ты это сам придумал?

Вот цитата из книги OReilly - Practical Mod_Perl:
Цитата

Under mod_perl, we don't want the process to quit. Therefore, mod_perl takes care of it behind the scenes, and die( ) calls don't abort the process. When die( ) is called, mod_perl logs the error message and calls Apache::exit( ) instead of CORE::die( ). Thus, the script stops, but the process doesn't quit. Of course, we are talking about the cases where the code calling die( ) is not wrapped inside an exception handler (e.g., an eval { } block) that traps die( ) calls, or the $SIG{_ _DIE_ _} sighandler, which allows you to override the behavior of die( )...


Здесь идет речь о mod_perl 1. 
Для mod_perl 2 вместо Apache::exit( ) используется  ModPerl::Util::exit($status).

Разработчики mod_perl не болваны, чтобы при die вылетал процесс Perl, поэтому они вызов die перехватывают.

 smile  

Автор: djkostya 1.7.2006, 16:32
sharq,  а такая конструкция пойдёт $r->exit(0);  ??????????????
 

Автор: ежик 10.7.2006, 03:25
я согласен что могу ошибатся на счет die();

тогда пардон за ложную информацию 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)