![]() |
|
Модераторы: ginnie, korob2001 |
![]()
|
|
| Anarki |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 14.3.2005 Репутация: нет Всего: 11 |
Нужно работать с сокетами - отправить и принять данные, причём так, чтобы сокеты не мешали друг другу, не ждали пока первый сокет что-то сделает(т.е. неблочные).
fork() - юзать нельзя, как я понимаю нужно использовать IO::Select, или я нашёл модуль NET::Sockets::Nonblock. но ни там, ни там не смог разобраться Конретно, задача состоит в том чтобы послать HTTP запрос и получить ответ, сокеты пусть работают пачками, по 20-25 штук, чтобы не грузить проц, каждому сокету - по урлу... |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Может threads?
Имхо не то, но работать будет... |
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 3 Всего: 28 |
Anarki тебе нужно написать многопоточный сервер, без использования fork?
Есть решение в книги "Perl Cookbook", книгу можешь забрать в соотв. разделе. -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| Anarki |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 14.3.2005 Репутация: нет Всего: 11 |
Клиент, клиент а не сервер, если бы я хотел сервер, я бы уже сделал его. nerezus
имеешь ввиду? Мне такое решение не нужно, так как Perl не собран с поддержкой их, хотелось бы мультиплатформенное приложение. Ладно, забил на то, что нельзя использовать fork(), хотя это онимает много памяти Вот кусок кода
Функция visit() работает в цикле, точне в отдельном потоке(процессе), где ей передаётся аргумент вида : http://www.site.com/index.php?page=3 Но,после обработки достаточного числа урлов - она останавливается... не выводится сообщение Script worked for... и т.п. в чём может быть проблема?я думаю где-то в неправильной работе с IO::Select, а может сервак сам убивает процесс... =\ Вообще задача стоит установить таймаут для сокета,и обрабатывать их раздельно, не мешая друг другу, поменьше тормозя на урлах, Timeout обычный не помогает, поэтому и приходится изощряться Это сообщение отредактировал(а) Anarki - 27.7.2005, 23:30 |
||||||
|
|||||||
![]()
|
| Правила форума "Perl: Системное программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |