sfes
Новичок
Неблокирующие(асинхронные) сокеты глючат в PHP5?
Помогите разобраться с такой вот проблемой:
необходимо реализовать быстрый[\B] перебор хостов с посылкой запроса каждому.
Я нашел статью http://netevil.org/node.php?nid=280.
Т.е. нужно использовать многопоточность и притом асинхронно, чтобы сокеты не блокировались.
Я навернул немного скрипт из статьи и тестирую его на 20 хостах и 1, 3, 5, 10 сокетах.
Как только какойто сокет освобождается (fread возвращает 0), я переоткрываю его на следующий хост, и так, пока не прохожу все 20 хостов.
Так вот, при одном сокете в крайнем случае один-два запрос не срабатывают.
Если же брать больше сокетов, то выход по таймауту (т.е. когда fread возвращает 0) намного возрастает.
К примеру при 10 сокетах 14-16 хостов оказываются недоступны.
Такое ощущение что это происходит из-за глюков в самой реализации потоков.
Помогите, плз, с этим разобраться.
Могу выложить свой скрипт.
Помогите разобраться с такой вот проблемой:
необходимо реализовать быстрый[\B] перебор хостов с посылкой запроса каждому.
Я нашел статью http://netevil.org/node.php?nid=280.
Т.е. нужно использовать многопоточность и притом асинхронно, чтобы сокеты не блокировались.
Я навернул немного скрипт из статьи и тестирую его на 20 хостах и 1, 3, 5, 10 сокетах.
Как только какойто сокет освобождается (fread возвращает 0), я переоткрываю его на следующий хост, и так, пока не прохожу все 20 хостов.
Так вот, при одном сокете в крайнем случае один-два запрос не срабатывают.
Если же брать больше сокетов, то выход по таймауту (т.е. когда fread возвращает 0) намного возрастает.
К примеру при 10 сокетах 14-16 хостов оказываются недоступны.
Такое ощущение что это происходит из-за глюков в самой реализации потоков.
Помогите, плз, с этим разобраться.
Могу выложить свой скрипт.