Проверка IP на коннект по порту в несколько потоков.

drooner

Guest
Проверка IP на коннект по порту в несколько потоков.

Всем доброго!

Такая вот у меня задача.
Есть файл скажем, с 1000 IP адресов.
Мне надо каждый из них проверить на возможность коннеста по определенному порту, например 80.
Если коннект по 80 порту есть, то складываем в отдельный файл, если нет, то пропускаем и идем дальше.
Я это пытаюсь сделать функцией fsockopen(), построчно читая файл с айпи, таймаут 5 секунд. Но это же нереально, приходится ждать часами пока все айпи друг за другом прочекаются.
Потому возникла идея, а почему бы этот файл не разбить на 10 файлов по 100 айпи и для каждого не запустить свой процесс? Но как ........

Может есть более оригинальные решения, подскажите пожалуйста. Если можно с вариантами для unix и win.

P.S. fsockopen() постоянно выдает на экран warning если нет коннекта по заданному порту или айпи. Можно ли от этого както избавиться не изменяя php.ini? (на хостинге этого сделать не всегда дадут).

Заранее благодарен.
 

Sherman

Mephi
есть там функции pcntl_* — порпобуй в мане погляди:

http://ru.php.net/manual/en/ref.pcntl.php

но сам никогда на php этого не делал, поэтому конкретного howto сказать не смогу.
 

drooner

Guest
Спасибо за ответы, попробую.

2 Tor:
____________________________________________
для каждого не запустить свой процесс? Но как ........
____________________________________________
в блокноте
- :)))

Ну да, я наверное забыл сказать, что файл динамический, а 1000 я привел как пример. Уж как разбаить то файл на несколько разных частей
 

matross

Новичок
drooner
Мона запускать файл кроном и брать, например по 50 IP адресов из файла. Обработав их - удалять...
 

drooner

Guest
сорри, enter нажался.
продолжу.
... Уж как разбить файл на несколько равных частей поверьте я знаю, а вот как именно ДЛЯ КАЖДОГО ФАЙЛА ЗАПУСТИТЬ СВОЙ ПРОЦЕСС fsockopen() - незнаю.
Можно ли, например запустить 10 копией моего скрипта одновременно в бэкграунде одним скриптом? Через браузер то понятное дело, можно, но это изврат ))

Спасибо.

-~{}~ 17.06.05 13:59:

2 matross:
Да, я думал про крона, но как реализуется если честно не представляю. По большому счету мне крон то и нужен будет, ибо процесс проверки должен запускаться сам раз в сутки скажем.
О! А Зачем тогда вообще все то, что я написал выше. Давайте рассмотрим вариант, чтобы запустить кроном мой проверочный скрипт раз в сутки по одному этому большому файлу. Уж за сутки то он проверит порядка 20000 адресов если брать таймаут 5 секунд.
Я просто незнаю как сие чудо реализовать. Например, я жму в браузере кнопку "Start check", она запускает скрипт, скрипт запускает крона и процесс пошел.
НО, не будет ли браузер висеть и мирно ждать окончания процесса?
 

matross

Новичок
drooner Гы, предложи эту идею админам, думаю они ее оценят!!!!
 

drooner

Guest
ага )
и все-таки, есть варианты? примеры?
 

drooner

Guest
я бы сказал соксов ))
народ, может у кого есть несложное готовое решение, скиньте. Или продайте хоть.
Сенкс
 

nikit87

Новичок
drooner
ставишь тайм аут большой раз. два ставишь фишку ignore_user_abort() чтоб скрипт пахал после отключения браузера. ip хранишь в файле в виде 123.123.123.123:80
открываешь файл file(); потом каждую строчку эксплодишь разделителем :
ну и так юзаешь fsockopen
PHP:
if(fsockopen(...))
{
//открываешь файл и кидаешь туда ip и порт
}
вроде все
 

drooner

Guest
2 Astral Man:
на самом деле можно и не на пхп, лишь бы на хостинг ставился, перл вполне подойдет.

2 nikit87:
Таймаут стоит 5 сек, я где то писал. Этого достаточно чтобы достучаться до сокса, если не может - значит нам не нужен такой сокс ))
Вот за это - ignore_user_abort() - спасибо, не знал что такое есть, это может сильно помочь.
Суть простая - если я не юзаю крона, то мне надо запустить процесс скажем в 8 вечера, чтобы он там поработал на сервере пару часов, потом придти в 10 часов и забрать процеканные сервером соксы - и все (если абстрактно).

2 Tor:
Это я конечно написал красиво, бесспорно ))) "я жму в браузере кнопку "Start check", она запускает скрипт, скрипт запускает крона и процесс пошел"...
Я таким макаром просто пытался сказать что мне примерно надо, не надо плз рассказывать кто плакал кто уши чистил кто еще что, лучше советом или примером помогите чем умничать.
 

Tor

Новичок
drooner
ты понятия не имеешь, как работает крон (от анг. cron, где ты взял "крона" - непонятно)
хватит тут изливать свои жалкие мыслишки, лучше поди почитай, как это работает
 

nikit87

Новичок
drooner
я описАлся. имел ввиду не тайм аут а лимит выполнения скрипта))
set_time_limit ()

Tor'у пришлось не подуше как я понимаю то что "ты запускаешь скрипт а скрипт запускает крона". cron это что-то типа планировщика задач в винде. чтоб запустить его не требуется запуск скрипта. в этом то его преимущество и есть
 

drooner

Guest
2 nikit87:
понял. Ага, этого товарища set_time_out() я поставил сразу как можно больше. И процесс чекания идет, но наблюдать за этим тоскливо из окошка бедного ИЕ. Я потому и хочу этот процесс сделать незаметным, а иметь уже готовый результат.

2 Tor:
я имею понятие как он работает и больше чем ты, и то что это аналог виндового шедулера я тоже в курсе. И вместо того чтобы тут плакать лучше бы помог.
Описался, признаю, хрень написал, не подумал.

-------------
И все-таки я попробую спросить что хотел в самом начале.

Как СДЕЛАТЬ ПРОЦЕСС ПРОВЕРКИ СОКСОВ НА ОПРЕДЕЛЕННОМ ПОРТУ ИНТЕРАКТИВНЫМ, ТО ЕСТЬ НЕЗАМЕТНЫМ ДЛЯ ПОЛЬЗОВАТЕЛСЯ И НЕ ВИСЯЩЕМ ЧАСАМИ в БРАУЗЕРЕ?

Логику я понимаю, а как написать - хз. Даже на какую тему читать доки незнаю.
И еще вопрос.
Можно ли запустить из моего скрипта столько копий этого же скрипта с разными параметрами в количестве, равным кол-ву файлов, которые получатся при разбиении моего большого файла?

Алгоритм:
1) читаю большой файл
2) разбиваю по 100 строк на маленькие файлы, скажем их стало 10.
3) В цикле по кол-ву этих файликов формирую вызов этого же скрипта (или другого), который делает проверку в каждом из этих файликов как-бы параллельно.
4) Если проверка ОК, то результаты сливаю в новый файл.

Все понятно, кроме п.3, можно ли выхвать таким образом, что работать станет чекер параллельно?
 

Tor

Новичок
молодой человек
здесь отвечают на конкретные вопросы
мол, написал вот скрипт, вот это не работает, предпринял такие-то шаги, но не помогло

а ты хочешь получить готовый скрипт, намечтав, что он должен делать

предложения о работе следует размещать в другой форум с указанием суммы

Описался, признаю, хрень написал, не подумал
так "описался" или "не подумал"?
или понятия не имел, что такое крон
з.ы. "крона" - это батарейка
 

drooner

Guest
То есть, разбился мой файл на 10 маленьких частей, посувался в файлики типа temp_001.txt, temp_002.txt, temp_XXX.txt
И вызываю я скрипт одновременно 10 раз и передаю параметрами имена этих файлов, типа
while (i<кол-во_файлов) - пример-абстракция, не надо плакать
{
system("вызов check1.php?filename=temp_001.txt")
system("вызов check1.php?filename=temp_002.txt")
...
}
и в таком духе.

Но оно же не будет парралельно запускать скрипты.
 
Сверху