The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"mod_perl2 запуск дважды одного скрипта"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [ Отслеживать ]

"mod_perl2 запуск дважды одного скрипта"  
Сообщение от cthu_mp on 22-Окт-08, 12:55 
Hi all!

!#/usr/bin/perl

print "Content-Type: text/html\n\n";

print "Counter: " . (++$counter) . "\n";
print time(), "\n";

sleep(20);

print time(), "\n";


Вот этот скрипт я запускаю дважды, в двух окнах браузера с интервалом в несколько секунд (около 10).
Оба выдают одинаковый результат и завершают выполнение одновременно.

Но если я правильно понимаю, Apache должен передавать работу другому потомку, если первый занят и, соответственно, оба скрипта должны бы выполняться паралельно, завершаться с тем же интервалом и выдавать разные результаты (независимые др. от др. $counter'ы и время).
Да даже если должны выполняться последовательно в одном потомке - тоже не понятно почему результаты одинаковые.

Если сделать копию скрипта и запустить оригинал и копию с тем же оригиналом - результаты ожидаемые - $counter'ы не зависят др. от др., время выдается различное.


И еще не очень понимаю как работают и создаются потомки. А именно:
Every time a server gets a request to process, it hands it over one of the children, generally in a round robin fashion.
вот здесь не понимаю - один потомок обрабатывает только один скрипт (как speedycgi), при этом может быть несколько потомков для одного скрипта, либо же одному потомку может быть поручена работа по обработке различных скриптов?
Разница, надо заметить ощутима.
Если 1 потомок обрабатывает 1 скрипт (и больше ничего), то всё ясно - глобальные переменные не очищаются, да вообще никакая чистка не проводится. Но всё, что сохранено - может быть только следствием работы одного скрипта
А вот когда 1 потомок может обрабатывать несколько скриптов, каждый из которых подключает одинаковые модули (к примеру My::Test), тогда глобальные переменные модулей сохраняются не только между вызовами одного скрипта, но и между вызовами нескольких скриптов. Т.е. скажем скрипт 1 установил $My::Test::variable = 123; Потом запустился скрипт 2 - получится, что $My::Test::variable == 123. Вот такого упоминания в документации по мод_перлу не видел:(.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "mod_perl2 запуск дважды одного скрипта"  
Сообщение от cthu_mp on 22-Окт-08, 13:00 
забыл сказать.
Тестировал всё на suse linux 10.3.
apache 2.2.4
мод_перл версию не знаю:(
apache2ctl -M выдает в качестве одного из модулей:
perl_module (shared)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "mod_perl2 запуск дважды одного скрипта"  
Сообщение от cthu_mp on 22-Окт-08, 18:17 
Проблема решена.
Если кому интересно, виноват во всем был кэш оперы.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру