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

Tor

Новичок
Но оно же не будет парралельно запускать скрипты
уже значительно лучше
пациент идет на поправку, я бы сказал
а теперь воспользуйся поиском, что бы узнать, как запустить параллельные скрипты
 

drooner

Guest
2 Tor:
емое, какие все умные. Все работает, я спрашиваю вполне конкретно как мне реализовать, но по другому, оптимизировать иначе, если по-русски.
Мне не надо готового ничего, хотя бы пример или совет.
Кстати если не заметил, то раздел называется "Все о программировании на PHP" а не "ответы почему не работают скрипты".
))

-~{}~ 17.06.05 17:00:

Да, среди всех тут участвующих пока наблюдается единственный кандидат в пациенты, это ты Tor. Хаха

2 Tor: К твоему сведению, прежде чем пойти сюда я немало поюзал и яндекс и все остальное, и поверь, кроме как флуда типа я плакал а он не плакал х..р найдешь, блин.

Да, флуд реальный, и все из-за какотого.... скрипта/
 

nikit87

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

matross

Новичок
Тебе ж сказали, делай кроном, и будет у тебя паралельность... Гы, шобы такая паралельность везде была :)
 

drooner

Guest
2 nikit87:
ага, скорее всего упустил, уж больно топ жирный оказался.
Смори.
Файл с соксами sox.dat , в нем 1000 штук к примеру. Он динамический, может быть и 10000 штук.
Что я делаю (алгоритмически пишу):
fread (sox.dat)
while (! eof)
{
$sox=fget(sox.dat) - читаем построчно
$check= fsockopen($sox,1080, ......, 5) - открываем сокет на
порту 1080 с таймаутом 5 секунд.
if (! $check)
{
- если нет коннекта, то идем на следующую строку
}
else
{
echo (...) - иначе рисуем на экране сокс, который онлайн
}
}

Теперь арифметика. 1000соксов * 5секунд = 5000 секунд
или чуть менее полутора часов.
Именно столько браузёр висит и одидает результат.
Потому и нужна параллельность.


2 matross:
Да я понял, что cron .... Но не понял откуда параллельность то возьмется?
А, или скажем запуск в 11:00 check.php?file=temp001.txt
В 11:01 check.php?file=temp002.txt
В 11:02 check.php?file=tempХХХ.txt и в том же духе? Ну да, наверное, только не очень оно удобно будет.

Все-таки хочется сделать так, чтобы выражаясь примитивным языком, нажал кнопку "GO", запустились бы 10 копий моего скрипта, каждая из которых чекала бы файл из 100 соксов.
Результат налицо - процесс займет в 10 раз меньше времени.

Всем спасибо.
 

nikit87

Новичок
тебе делать нечего чтоли?? сидеть полтора часа перед браузером. сказали же много раз. используешь крон!!! и там извини меня пофигу скока времени висит скрипт и исполняется!!! тока нуна в файл печатать а не echo.
Сам делал месяц назад именно такую штуку. тока для проверки работоспособности прокси на разные методы http . Было под 50000 проксиков в одном файле. причем хотел чтоб они были надежными! поэтому чекил их постоянно по крону. читает из одного файла, проверяет, записывает в другой а потом заменяет первый. так почему то параллельность не нужна оказалась
 

drooner

Guest
спасибо, понял.
а примерчиком поделитьсся не хочешь? )))
Вот я тупой, и убей не пойиу как я через браузера могу в крона заслать зашедуленное задание, которое будет крутиться на сервере и через какоето вермя я посмотрю результат. Сделать это через терминал то на сервере понятно как, а вот онлайн версию...

Сервис я хочу соксовый для людей написать если быть честным.
Так сказать для разных нужд ))
 

nikit87

Новичок
либо через шелл либо exec() даешь задание крону исполнять твой скрипт раз в день. а сам спокойно сидишь и пьешь кофе около выключенного компа. скрипт в заданное тобой время исполниться сам.
 

drooner

Guest
В том и дело, что шелла нет. Через exec() как сделать можешь пример привести? Не могу пока ничего толкового найти в сети.
if ($cmd=1)
{
exec(...?...)
}
else
{
echo "no command";
}

Вот там где ...?... что именно писать, чтобы дать задание крону исполнять мой скрипт каждый день в 12.00. Ведь надо интерпретатору php мой скрипт както указать тоже или нет? Всю жизнь с виндами работал, даже примерно незнаю как вызов писать.
 

kmz

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

Автор оригинала: drooner
Всем доброго!

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

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

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

Заранее благодарен.
$fp = fsockopen($server, "$port", $errno, $errstr, 0.3); //можно уменьшить таймаут
 
Сверху