Что такое демон? Их практическое применение? Использование с php?

Может ли кто-нибудь объяснить мне в двух словах, что такое демон и как они используются в php?

Я знаю, что это постоянный процесс. Но я не могу понять, зачем это нужно в приложении php?

Может кто-нибудь привести примеры использования? Могу ли я использовать демон для уменьшения использования памяти моим приложением?

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

Или я совершенно не прав? :)

Спасибо ;)


person Somebody    schedule 07.11.2010    source источник
comment
Вы не должны создавать демонов в PHP, если вам это не нужно. Для этого есть гораздо лучшие решения и языки   -  person Pekka    schedule 07.11.2010
comment
@Pekka: есть ли какая-то конкретная причина? Я не особо разбираюсь в PHP-разработчике, так есть ли особенности среды выполнения, которые делают ее особенно непригодной для постоянных процессов?   -  person Joe    schedule 07.11.2010
comment
@Joe его основная задача - запускать недолговечные скрипты для быстрого обслуживания запросов, поэтому он не очень силен в сборке мусора. Также, как указано в следующей ссылке, обычно возникают проблемы с межпроцессным взаимодействием. Тем не менее, создать демона на PHP вполне возможно. Хорошее обсуждение здесь: stackoverflow.com/questions/646928/   -  person Pekka    schedule 07.11.2010
comment
Я не сказал на php, я сказал на php.   -  person Somebody    schedule 07.11.2010
comment
PHP хорошо запускает сценарии демонов. Теоретически можно, но он никогда не предназначался для написания собственных демонов PHP.   -  person bcosca    schedule 07.11.2010
comment
Я говорю о самом демоне, написанном на другом языке программирования. Какую пользу он может дать приложению, написанному на php, в смысле производительности.   -  person Somebody    schedule 07.11.2010


Ответы (4)


Может ли кто-нибудь объяснить мне в двух словах, что такое демон и как они используются в php?

приложение или процесс cli

Я знаю, что это постоянный процесс. Но я не могу понять, зачем это нужно в приложении php?

Вы можете использовать это, чтобы делать; задание, которое не видно пользователю или из интерфейса, например очистка устаревших данных базы данных, планирование задачи, которую вы хотели обновить, часть или что-то в базе данных или странице в фоновом режиме

Может кто-нибудь привести примеры использования? Могу ли я использовать демон для уменьшения использования памяти моим приложением?

Я думаю, что у drupal или cron был скрипт cron ... возможно, проверка поможет. Уменьшить память? нет, оптимизация памяти всегда зависит от дизайна приложения или кода сценария.

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

Нет, демон - это сценарий, однако вы можете создать файл данных JSON или XML, который может обработать сценарий демона.

person SlamDunk    schedule 07.11.2010

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

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

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

person Tim Post♦    schedule 07.11.2010

Демон - это бесконечный запущенный процесс, который просто ждет задания. Веб-сервер («http-daemon») ожидает обработки запросов, демон принтера ждет, когда что-то напечатает (и так далее). В системах Win это называется «сервис».

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

person KingCrunch    schedule 15.11.2010

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

MySQL сам по себе запускается как демон, но типичный способ уменьшить количество обращений к MySQL - кэшировать их вывод в Memcached (который, что неудивительно, также работает как демон). Таким образом, преимущество использования Memcached не в том, что это демон, а в том, что это демон, более ориентированный на конкретную задачу (кэширование объектов), чем MySQLd (предоставляющий базу данных с запросами SQL).

Если вашему приложению постоянно требуется выполнять одни и те же SQL-запросы, то определенно стоит подумать об использовании Memcache или другого уровня кэширования (который, да, скорее всего, будет предоставляться демоном) между приложением и MySQL.

person Ben Regenspan    schedule 15.11.2010