Установка phpDaemon + libevent на Ubuntu

Зачем нам это надо можно понять из предыдущей статьи, теперь о том как нам всё это установить:

0. PHP должен быть собран с этим:

PHP5 CLI >= 5.3 с поддержкой pcntl, shmop и sockets

1. На всякий случай удаляем старывй libevent (если его не было ничего страшного не будет).

2. Качаем libevent из ветки 1.4.x по этой ссылке

3. Распаковываем архив

4. Выполняем конфигурирование и компилируем библиотеку

5. Устанавливаем pecl расширение для php

6. Добавляем расширение в php.ini для php-cli, т.е. /etc/php5/cli/php.ini

7. Перезапускаем веб-сервер

8. Смотрим phpinfo(); и убеждаемся, что там есть раздел про libevent

7. Заходим в папку, куда будем ставить phpDaemon

8. Делаем туда импорт из GIT репозиатрия phpDaemon

9. Ставим права

10. Ставим расширение proctitle

11. Добавляем его в php.ini для php-cli, т.е. /etc/php5/cli/php.ini

и снова перезапускаем веб сервер

12. Запускаем phpdaemon

Дальше для удобства сделаем симлинк:

Теперь можно в конфиг-файле, который находится в /usr/local/lib/phpdaemon/conf/phpdaemon.conf.php закомментировать строчку

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

А в файле /app-servers/HTTP.php меняем listen-port с 80 на 82 дабы не толкаться с apache.

После этого убиваем старого демона командой

и запускаем его заново

заходим по адресу http://127.0.0.1:82 и наслаждаемся картинкой.

Мы получили рабочий мнопроцессный HTTP-сервер на PHP! Потестим его:

siege http://127.0.0.1:82/ -d1 -r10 -c25

Transactions:                 250 hits
Availability:              100.00 %
Elapsed time:                8.06 secs
Data transferred:            0.46 MB
Response time:                0.00 secs
Transaction rate:           31.02 trans/sec
Throughput:                0.06 MB/sec
Concurrency:                0.13
Successful transactions:         250
Failed transactions:               0
Longest transaction:            0.03
Shortest transaction:            0.00

Получается он работает с частотой 30Hz

12 Comments

  1. Эх с установкой то проблем нет.
    лучше бы показали на примере как пользоваться этим чудом

    1. Обязательно покажу, просто ещё руки не дошли 🙂

  2. Здравствуйте, не могу запустить Демон, все библиотеки установил, демон установил, не могу запустить, пишется ошибка

    PHP Warning: Module ‘libevent’ already loaded in Unknown on line 0
    [PHPD] Config file not found in ‘/etc/phpd/phpd.conf;./conf/phpd.conf’.

    помогите )

    1. По поводу Warning -> скорее всего libevent подключается сразу в нескольких конфигах. Посмотрите и снесите лишний.
      По поводу второй ошибки -> собственно нет файла с конфигом демона ни в системной папке (/etc/phpd/) ни в текущей(./conf)/ Надо его создать. Вот его образец: https://github.com/kakserpom/phpdaemon/blob/master/conf/phpd.conf.example

  3. Уважаемый господин Андрей Токарчук.
    Объясните пожалуйста тупому, как запустить примеры которые входят в состав phpDaemon. В последней версии демона нет конфига phpdaemon.conf.php, есть phpd.conf, в него не прописывается ‘mod-http-enable’ => 1, я поменял в /app-servers/HTTP.php listen-port 80 на 82, перегрузил демон, зашел по адресу http://127.0.0.1:82, и страницей которая вывелась у вас не насладился :(,

    1. Да, Вася там знатно поменял всё. Файла phpdaemon.conf.php действительно нет, где указать порт – вообще непонятно.
      Нашел вот несколько ссылок:
      По установке
      По конфигурированию

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

      1. Варианта два.
        Первый вариант: — прямо в настройках app есть стартовый конфиг, который можно править…
        Например HTTP.php — прописываем биндинг, порт, дефаултное приложение и т.п.
        Второй вариант: — он уже описан в примерах на ГИТЕ
        в phpd.conf :
        _Имя_Модуля {
        _НАСТРОЙКИ МОДУЛЯ_
        }
        Например:: ServerStatus {
        enable 1;
        }
        HTTP {
        enable 1;
        privileged;
        }

  4. Андрей Токарчук
    Вы разобрались как все таки установить phpdaemon ???
    У меня тоже не получается по Вашей статье!

Leave a Comment