![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Ramirez, отличное предложение
![]() Добавлено через 36 секунд я имел те, что вынесли как подфорум или подраздел... |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Я тоже поддерживаю данное предложение. Потому как, мне кажется, уже много людей на этом форуме пытаются с poe работать. Это позволило бы обощить опыт
![]() |
|||
|
||||
Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: 4 Всего: 5 |
Может попробовать перевести совместно документацию? И дополнить ее своими примерами/опытом.. Если, конечно, желающие есть? Можно было-бы завести Wiki например...
Если я правильно понимаю, то POE в данном случае выполняет роль диспетчера процессов. В вытесняющей многозадачности диспетчер может сам снять процесс по истечении отведенного ему времени. В невытесняющей модели, диспетчер процессов сам не может этого сделать, поэтому процессы сами должны возвращать ему управление как можно чаще, а он только собирает очередь и решает какой процесс вызвать следующим. Практически, это сводится к тому, что мы должны свести к минимуму использование циклов внутри процессов, а все циклы разбить на последовательные вызовы. Да и вообще, почти все вызовы делать через ядро POE. Поправьте меня, если я что-то путаю... Это сообщение отредактировал(а) Ramirez - 2.4.2007, 01:42 |
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Вот именно.... Очень хорошо поняли и изложили ![]() -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
G0rinich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 21.8.2006 Репутация: нет Всего: 1 |
Самое зло - это использовать sleep в POE )))
|
|||
|
||||
stan777 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 29.1.2007 Репутация: нет Всего: нет |
А что быстрей РОЕ, форки или треды ? ну все естественно на Unix, я так понимаю алгорит паука вездет тотже без цикла типа for(@url){..} ? |
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
А эт зависит от того что иммется ввиду по словом "быстрее" ![]() Быстрее написать на POE если его конечно знаешь... А вот работает у меня быстрее всего на форках, хотя треды я еще не пробовал, но говорят под никсами, они реализованы не лучшим образом :( Добавлено через 5 минут и 44 секунды Но я пока POE знаю не очень, но всеже склоняюсь именно к нему, и на нем буду делать все, на форках сложнее, особенно межпроцесовое общение... А POE хорош тем что имеет компонентную архитектуру, и если делать все по правилам, то наращивать функционал будет много проще... -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
G0rinich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 21.8.2006 Репутация: нет Всего: 1 |
POE сам умеет форкаться когда надо. Вернее в нем есть какой-то механизм форков, но я всегда наблюдал только один процесс.
От форков я отказался. Вернее от того, что там в перле под именем FORK живет. Так как вообще не понял как оно работает ))) Слабоват я тогда был в никсах, а теперь не кайф про это вспоминать ))) Уж лучше руками запустить несколько раз один скрипт, предварительно научив копии не мешать друг другу. |
|||
|
||||
Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: 4 Всего: 5 |
я тут пробовал POE::Component::EasyDBI неблокирующий доступ к базе реализует, так вот он висит отдельным процессом в системе...
Вот, кстати есть такой вопрос. Вот код для примера:
при подключении клиента, в процедуре client_connect ставится задержка 5 секунд, по истечении которых сессия закрывается. в процедуре client_input проверяем ввод клиента, и например, если введено слово "auth" отменяем запланированное закрытие сессии. Так вот бывают ситуации, коннект плохой например, когда в очередь уже встали другие события для этой сессии (через yield), но перед ними стоит событие shutdown, оно естественно происходит, закрывает сессию, а потом приходят следующие события, сессии такой уже нет, и скрипт вываливается :( Мне казалось что POE должен сам такие ситуации корректно обрабатывать. Видимо где-то я логику не улавливаю... Это сообщение отредактировал(а) Ramirez - 5.4.2007, 09:33 |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Так ты же сделай просто $heap->flag. проверяй его и если он не выставлен например, то функция отрабатывает, а если выставлен то выход. Я так подобные систуации разруливал
![]() |
|||
|
||||
stan777 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 29.1.2007 Репутация: нет Всего: нет |
Я так понял что тут обсуждается таже проблема велосипеда, то есть паука. Да на форках я тоже хочу написать, вот только как разберусь с IPC::Shareable, мне кажется это быстрей чем через pipe()'ы, хотя риализации, ни на расшареной памяти ни на пайпах у меня нет, хотя вот на тредах работает вроде нормально, это лучший вариант который я имею на сегодняшний день, хотя жрет много памяти 70 тредов 250 мегов, это на FreeBSD 6.1. Это сообщение отредактировал(а) stan777 - 5.4.2007, 18:06 |
|||
|
||||
Ramirez |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: 4 Всего: 5 |
Нашел кажется ![]()
тогда, включится куча проверок (как написано в мане) и в том числе:
Вроде помогло.... Это сообщение отредактировал(а) Ramirez - 16.4.2007, 04:22 |
||||||
|
|||||||
nagual2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 13.6.2009 Репутация: нет Всего: нет |
Прошло 2 года а пациент все там же ...
Кто то решил данную проблему? |
|||
|
||||
Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: 4 Всего: 5 |
Какую именно? G0rinich привел в треде наиболее академичный пример решения проблемы.
Nab - наиболее простой для понимания, но с некоторыми нюансами. Это сообщение отредактировал(а) Ramirez - 16.6.2009, 08:59 |
|||
|
||||
nagual2 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 13.6.2009 Репутация: нет Всего: нет |
А как приведенные варианты будут работать с
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |