Демон на PHP

HraKK

Мудак
Команда форума
Я эту тему читал, еще давно...
Только про usleep интересно, но это и так понятно

-~{}~ 13.07.07 17:18:

WP
ngingx откидывается как и демон на другом языке в силу подручных средств.
Да-да я знаю что это все не правильно, но если надо - то можно.
Проект благотворительный, не комерческий, поэтому....


Поэтому и ищю выход из положения.

-~{}~ 13.07.07 17:19:

Кстате буду благодарен за твой класс демона - поразберать его, думаю будет полезно.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Re: Демон на PHP

Автор оригинала: HraKK
Хочу сделать демона на php, который будет выступать в роли сервера, клиент-серверной игрушки. Отсюда у меня несколько вопросов:
Я достаточно интенсивно использую демонов на PHP в одном проекте. Он не порт слушает, а почту обрабатывает и по сайтам лазит - периодические задачи с очень разной длительностью исполнения, кроном запускать неудобно.

Вот небольшой класс-враппер написал, который делает из скрипта демон:
daemon emulation
HraKK в существующем виде он скорее всего не подойдет. Я не из родительского процесса форкаю дочек, которые работают, как в апаче. Я форкаю дочерний процесс, он засыпает, а родительский работает. При смерти родительского процесса будится дочерний, который форкает новую дочку.
Причина для такого подхода - своеобразная "уборка" в памяти.
Дочка создается скриптом до начала работы, при пробуждении создает новую дочку, а вся выделенная скриптом память освобождается просто по завершении работы, не переходя в дочерний скрипт.

Нормально работает, в принципе, только иногда, раз в неделю, виснет по неизвестной причине. Мне не критично, не дебажил.

Как лучше принимать данные от клиента?
Была на phpinside новость про concept - веб-сервер на PHP, думаю там стоит посмотреть.
И может лучше не заморачиватся и просто подымать скрипт каждый раз ?
Depends :) Попробуй, посмотри, как по скорости будет!
Общение между клиент - сервером будет происходить на C библиотеке CURL
В смысле, со стороны клиента будет cURL?
 

AP

Новичок
Зачем вообще для этих целей web сервер? не прощили для обмена данными между двумя скриптами использовать шаред мемори?

cтупил ссори...
 

MiksIr

miksir@home:~$
форкаю дочерний процесс, он засыпает, а родительский работает. При смерти родительского процесса будится дочерний, который форкает новую дочку.
Причина для такого подхода - своеобразная "уборка" в памяти.
Затейник Вы ;) Вообще, обычно, форкают дите, то работает, а родитель контролирует работу дитя и форкает новые, если старые дохнут (или сам их киляет).
не прощили для обмена данными между двумя скриптами использовать шаред мемори?
Канечно, особо если скрипты на разных серверах ;)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Автор оригинала: MiksIr
обычно дите работает, а родитель контролирует работу дитя и форкает новые, если старые дохнут (или сам их киляет).
Мне лень было писать и отлаживать такой родительский скрипт, который будет кушать минимум памяти и в дочках освобождать все переменные, чтобы можно было работать без контроля над уборкой мусора. Может, займусь как-нибудь ...
 

Ilya Bous

Новичок
Автор оригинала: grigori
Мне лень было писать и отлаживать такой родительский скрипт, который будет кушать минимум памяти и в дочках освобождать все переменные, чтобы можно было работать без контроля над уборкой мусора. Может, займусь как-нибудь ...
Не очень сильно понятно, чем это намного лучше запуска по cron?
 

HraKK

Мудак
Команда форума
Ilya Bous
А причем тут крон?

grigori
Да думаю не подойдет. Но я вроде решил уже свои проблемы, осталось дождатся финансирования и выложу покажу что получилось =)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
С удовольствием посмотрю!

-~{}~ 27.07.07 23:07:

Ilya Bous
Периодичность запуска и время исполнения не фиксированы.
Задача может занимать 1 минуту или 20 - повторный запуск произойдет после окончания исполнения предыдущей. Нет проблем с одновременным исполнением. Удобно при обработке почты.
 

cDLEON

Онанист РНРСlub

>Периодичность запуска и время исполнения не фиксированы.
Задача может занимать 1 минуту или 20 - повторный запуск произойдет после окончания исполнения предыдущей. Нет проблем с одновременным исполнением. Удобно при обработке почты.

У вас как там с гемороем ? Могу свечи посоветывать....
Почему нельзя кроном вызывать каждую секунду\минуту скрипт, который при запуске сначала проверяет на существование файл, а потом если файл существует делает exit; а если нет, то создаёт а по прекращению работы удаляет?

-~{}~ 31.07.07 14:35:

Только про usleep интересно, но это и так понятно
Да бред с этим услипом там... Мне вот что интересно...
Почему ни кто не использует socket_select ?
 

MiksIr

miksir@home:~$
> Почему ни кто не использует socket_select ?
Ну почему, я на php.ru видел тему, где человек чат на PHP по принципу мультиплексирования сделал. Только глупо это на PHP делать, да и select - не самый лучший инструмент для таких задач.
 

Alexandre

PHPПенсионер
Почему нельзя кроном вызывать каждую секунду\минуту скрипт, который при запуске сначала проверяет на существование файл, а потом если файл существует делает exit; а если нет, то создаёт а по прекращению работы удаляет?
минимальный квант времени для крона - минута.
 

ONK

Пассивист PHPСluba
MiksIr, а можно развить тему? Всегда с удовольствие слушаю про умные вещи. Вот и в данном случае, очень интересно послушать про недостатки инструмента socket_select, и про то, почему именно на ПХП глупо делать демоны обрабатывающие потоки по принципу мультиплексирования?
Может на ПХП лучше форкать потомков, по 5мб каждый? ;)
Про то, что ПХП и демоны, есть вещи не совместимые лучше не говорить, я не пойму.
 
ONK
Так же как gc у php не понимает как развязывать цикличные ссылки ;)?
 

MiksIr

miksir@home:~$
ONK, а Вы пробовали поучаствовать на камазе в гонках формулы-1... приблизительно тот же кайф. И даже едет!
Если Вы начинаете работать с соединениями на уровне мультиплексирования - начинайте использовать и соответствующие языки, да и с момента появления select-а уже прошло достаточно времени, что бы появились всякие kqueue, epoll-ы и т.д.
Если нравится онанизм, пишите... хоть целую ОС напишите, но когда к низкоуровневому api подъезжают на высокоуровневом языке... да еще на таком монстрообразном, мне становится страшно за то, что там могут навалять. Это мое мнение, и спорить о чем-то я не собираюсь.
 

ONK

Пассивист PHPСluba
MiksIr,
1. А Вы пробовали поучаствовать в том, о чём рассуждаете? Мне почему-то кажется, что нет.
2. Кто определил критерии соответственности языков программирования для использования данной технологии и где с ними можно ознакомиться?
3. Лично мне нравиться скорость разработки и простота отладки программ написанных на ПХП, при более чем приемлемой скорости их работы. Приведу простейший пример, на переделку и отладку демона сервера чата в демон многопоточной раздачи файлов с шифрованием траффика по новому высокоуровневому протоколу у меня ушло 3 дня,,, я бы посмотрел сколько ушло бы времени при попытке написать то же на С/С++
4 Спорить действительно бессмыслено, аргумент железный, мнение есть мнение. Страх это такая штука, которая как и невинность проходит с удачным опытом. Самый низкоуровневый ресурс к которому ПХП даёт доступ напрямую через "собственный API" это процессор, что может быть ниже?
 

MiksIr

miksir@home:~$
Имел. И еще больше я имел отношение к разработке высоконагруженных распределенных систем. Велосипедистов туда не подпускают, а за идеи писать то, что общается напрямую с клиентом на ПХП - увольняют.
Максимум, что можно себе позволить - создать на ПХП прототип, но поверьте - у хорошего Си программиста прототип на Си займет не на много больше времени, чем прототип на ПХП.
 

ONK

Пассивист PHPСluba
MiksIr, 1. У каждого свои заморочки, в конце концов мне с вами не работать.
2. Сам демон дорабатывается за час, много времени занимает реализация специфической функциональности, которую надо отлаживать и с которой надо экспериментировать. Вот как раз для этой цели ПХП подходит идеально. На С С++ на одну лишь стадию компилирования исходников в сумме ушла бы неделя.
По поводу производительности, она очень даже ничего, я сейчас специально тесты проведу, правда они будут не очень корректны, но картину показывают, сравню апач со своим сервером раздачи файлов в режиме последовательных запросов.
 

fisher

накатила суть
>>сравню апач со своим сервером раздачи файлов в режиме
>>последовательных запросов

запаслись попкорном, ждём!
напиши ещё плз какая пиковая нагрузка на сервер. потому что "по уму" MiksIr прав, хотя и слишком категоричен в. но если нагрузка небольшая, то чем проще написать-подерживать тем лучше, если удобнее PHP то почему нет. хотя конечно с PHP всё понятно ;)
 

MiksIr

miksir@home:~$
Угу, особо хочется услышать, чем не устроил вариант легкого сервера (тот же nginx) + openSSL для шифрования. Это я и называю велосипедостроением.
 
Сверху