Как реализовать многопоточность в PHP через fork?

Статус
В этой теме нельзя размещать новые ответы.
Ок, такой пример, у тебя есть 500 кил урлов, которые нужно проверить на 200-ю, вообщем нужны одни заголовки
второй пример - ту же базу нужно проверить на количество страниц в индексе

Нужна ли здесь многопоточность? мне кажется да, возможно я и не прав.

Как бы ты поступил в таких задачах?
ну в обоих вариантах МОЖНО делать многопоточность, но...
на нормальном канале проверить 500к на 200 это будет сутки-двое без многопоточности... imho такие задачи вполне позволяют подождать сутки-двое. Всетаки не каждые 5 минут проверять то :) хотя безусловно есть варианты, но... пляски с грамотной пропиской многопоточности, перекомпиляцией php и прочего...
с вопросом проверки индексации.. да при стандартном подходе никуда не деться от многопоточности... но есть несколько хитростей :)
вопрос в том где брать много ip :)
палю тему - внимательно читаем мой предидущий пост.
к сожалению прямым текстом не скажу - если все будут знать то тему прикроют. А хайд это несправедливо... кто умный тот пусть и пользуется....
теперь когда у нас есть ip мы их есно распределенно используем... скажем на каждом хосте по ...много ip по которым curl-ом делаем запросы к поисковику.
тогда мы имеем наш основной скрипт, который передает через get скажем 10-20 ссылок которые нам надо проверить, но мы просто открываем файлхендл на удаленный файл со ссылкой содержаший параметры...
т.е. какв прошлом моем посте было сказано - мы открываем десяток урлов. которые там себе парсят с десятка ip ... ведь скрипт начнет выполняться когда мы только сделаем запрос... а на нашей стороне мы в то время пока он парсит не ждем, а открываем промежуточные парсеры на других хостах... ну а потом промежутки нам возвращают только результат, что намного меньше чем чекать все это локально.

еще раз - объединение двух идей из предидущего поста дает нам и ip-шники, и "псевдомногопоточность".
хотя конечно можно покупать ip или прокси пачками и парсить постаринке... тогда от многопоточности никуда.
Это означает, что такой пхп не будет работать в много поточных серверах как модуль.

Зачем такое писать вообще на ПХП?

Сейчас можно писать на чём, то удобном и запускать на домашнем компе. Или если нет дешевого домашнего инета то на ВПС.

Я бы парсер писал бы на джава. Там есть тридс и супер штука для скачивания.
Для просмотра ссылки Войди или Зарегистрируйся

И такая прога будет работать везде.
тебе не кажется что жава это немного не php...
блин, вот изза таких как ты, я и не пользуюсь хайдами. а только намеками...
Сказано же - не хочет чел учить другие языки. Нет надо пропихнуть свой недоязык...
 
тебе не кажется что жава это немного не php...
блин, вот изза таких как ты, я и не пользуюсь хайдами. а только намеками...
Сказано же - не хочет чел учить другие языки. Нет надо пропихнуть свой недоязык...

Если ты прочтёшь внимательно тему, то увидишь что человек хочет сделать многопоточную програму на пхп, а пхп не самый лучший язык для много поточных програм.

А самый лучший язык для много поточных програм это джава.
 
Если ты прочтёшь внимательно тему, то увидишь что человек хочет сделать многопоточную програму на пхп, а пхп не самый лучший язык для много поточных програм.

А самый лучший язык для много поточных програм это джава.

Тебе не кажется что тема немного не "какой язык выбрать для многопоточности"?
Если бы это была именно такая тема, то я бы может и высказал бы все что я думаю про жаву... а так... а так, у меня нет 104 сообщений, чтобы не бояться обвинения во флуде.
 
Перед тем, как открывать тему, естественно посмотрел, что есть на счет форка на форуме, форк с перлом уже обсуждались, но это отдельная тема и много где обсуждалось

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

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


Тема была конкретной - реализация многопоточности в пхп через форк (под никс системами разумеется), а суть, реализация многопоточности в пхп

Хотелось бы в процессе создавать новый с помощью программы породившей родительский процесс и координировать все эти процессы

Слышал, что это делают с помощью форка (именно в пхп), но не знал как, поэтому здесь и задал вопрос

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

Вообщем интересует именно реализация многопоточности на пхп

Всего увидел два намёка - н****кируемые сокеты и открытие пачки файлов перед скачиванием

То, на что намекает Mendel (исплользование разных ip) года 2 назад кто-то хотел использовать для реализации спамилки на пхп, не помню кто это был и реализавали ли они ее, возможно эт VIP вообщем не знаю, это гораздо ближе к теме, но тоже не совсем то.

PS: я не кодер по природе, логику процесса я понимаю, но язык учить для меня ноша непомерная, хватает и пхп, а другие изучать, так нужно сначала инглиишь наверное, но языки это самое сложное для меня, если бы не так, то и не спрашивал бы.
 
вот тебе ещё идея, но будет работать только под *nix (чесно говорю сам так не пробовал:(
Из пхп создаёшь новый процесс своего скрипта в бэкграунде - например вызываешь в апострофах `php myscript.php &`. А скрипт на вермя своей работы пишет какой нить файл в специальныю дирректорию а в конце удаляет его. или можно попробовать мэнэджить процессы командой ps.

PS: распарсить гуглю в многопоточном режиме на 500 кил урлов (с одного ip) ?!!! не поделишься секретом как ты это собрался делать, а то у меня после 300 запроса стабильный бан! :)
 
PS: распарсить гуглю в многопоточном режиме на 500 кил урлов (с одного ip) ?!!! не поделишься секретом как ты это собрался делать, а то у меня после 300 запроса стабильный бан! :)

прокси, только прокси, да и этого сейчас похоже недостаточно
 
вот тебе ещё идея, но будет работать только под *nix (чесно говорю сам так не пробовал:(
Из пхп создаёшь новый процесс своего скрипта в бэкграунде - например вызываешь в апострофах `php myscript.php &`. А скрипт на вермя своей работы пишет какой нить файл в специальныю дирректорию а в конце удаляет его. или можно попробовать мэнэджить процессы командой ps.
не советую. уж лучше тогда перекомпилировать php чтобы fork работал... если менеджинг процессов делать вручную то такая белиберда получается... очень много подводных камней...
 
Вообще тут главный вопрос в каком окружении запускаеться скрипт.

Если это хостинг за 1 один доллар в месяц где запрещено запускать фоновые процесы которые жрут ресурсы, то скрипт с форком заметят в два счета.

И в таком месте дествительно единственый вариант это запускать скрипт на пхп и не через крон а через веб броузер и скрипт должен работать быстро и не запускать дочерних процессов.

другой вариант если разрешено запускать дочернии процесы которые будут жрать ресурсы. (это обычно VPS или дедик)

То тут лучше запустить демон и делаеться это через nohup или screen

Процес при запуске может создовать файл pid
И убивать его можно будет командой
kill `cat /home/user/run/process.pid`
 
Можно заюзать обходной вариант:
То, что ты хотел бы, чтобы было процессом - написать в отдельный скрипт (можно даже не на РНР), а из РНР в цикле его дергать в фоне.
Например:

PHP:
exec('/usr/local/bin/php -q thr.php 1>/dev/null 2>/dev/null &');
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху