Download the PHP package digitalstars/daemon without Composer

On this page you can find all versions of the php package digitalstars/daemon. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package daemon

SimpleDaemon

php version downloads repo size License

Комьюнити:

Беседа ВК (Помощь)

Почему SimpleDaemon?

Функционал

В библиотеке содержится 2 модуля:

Как это работает и зачем оно нужно

На сервере могут быть реализованы функции, которые требуют достаточно больших вычислений и ничего не возвращают. Клиент может быстро вызывать эти функции и передавать в них данные (если все процессы демона заняты, то вызовы будут копиться в очереди). При этом, после того как функция завершится на сервере, вернуть какое-то значение из неё клиенту обратно не возможно (из-за отсутствия в PHP асинхронности).

Типичный пример когда это может пригодится — логирование чего нибудь или сложные вычисления. Представим, что у вас есть веб сервер, который обрабатывает какие-нибудь запросы, и где-то среди этих запросов нужно провести вычисления сложной функции, а результат записать в базу данных (не возвращая в качестве ответа). В таком случае, вычисление значения и запись его в БД можно перенести в скрипт сервера демона, а внутри скрипта обрабатываемого веб сервером инициализировать клиент демона, который просто вызовет функцию с передачей необходимых параметров, и не дожидаясь её выполнения вернёт пользователю запрошенную информацию. Схематичный пример ниже

Оглавление

Подключение

Используя composer

  1. Установить

  2. Подключить autoload.php

Вручную

  1. Скачать последний релиз c github
  2. Подключить autoload.php.

Вот так будет происходить подключение, если ваш скрипт находится в той же папке, что и папка daemon-master

Сервер

Сервер представляет собой отдельный PHP скрипт, в котором реализованы методы для обработки данных. Этот скрипт запускается и работает в фоновом режиме, не зависимо от других скриптов. Для управления состоянием сервера предусмотрены консольные команды. Одновременно может быть запущенно несколько серверов.

Клиент соединяется с сервером по ID при инициализации. Важно чтобы они совпадали!

Инициализация сервера

Также для удобства поддерживается инициализация через метод Create

Методы настройки сервера

Все методы настройки возвращают $this. По этому их можно вызывать цепочкой вызовов сразу после инициализации через метод Server::create() \ Пример: \

isLog($is = true)

Метод для управления легированием. Если указать true, то в директории скрипта создастся новая директория daemon_logs , в которой 3 файла с логами:

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

isMultiThread()

Метод активирует многопоточную обработку данных, активировать многопоточность можно только если в php присутствует модуль ext-pcntl. Если модуля нет, то будет сгенерировано исключение

maxThreads(int $count)

Устанавливает максимальное количество дочерних процессов, если многопоточность удалось включить.

maxSize(int $size)

Метод для установки максимального размера сообщения. Подробнее об этому можно почитать тут (параметр max_message_size).

Если не уверены, то лучше не трогать

Основные методы сервера

init($func)

Устанавливает функцию инициализации переменных, которые должны быть доступны во время обработки данных клиента. Внутри неё можно инициализировать, например, объект для работы с БД

Пример

errorHandler($func)

Устанавливает функцию для обработки ошибок. При этом, если функция задана, то исключение не будет выкинуто. Информация об ошибках передаётся в функцию в следующем виде:

$func($error, $message, $file, $line, $e)

Где:

Внимание! $file, $line, $e будут присутствовать только в том случае, если тип ошибки не ERROR_DAEMON, иначе будет просто текстовое описание ошибки на русском языке.

Пример

module($id, $func)

Метод регистрирует новую функцию, которую можно будет вызвать из клиента по ID (первый параметр), и при необходимости передать в неё нужные данные

По сути этот метод - это основной функционал демона.

Пример

Код сервера:

Код клиента:

В этом примере клиент отправляет сообщение на сервер демона, он это сообщение принимает и записывает в БД

Служебные методы сервера

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

bool clear()

Метод для очистки очереди сообщений. По умолчанию сообщения от клиентов до сервера накапливаются в очереди даже если сервер не запущен. Этот метод очищает эту очередь и возвращает в случае успеха true, в случае ошибки false

stop()

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

kill()

Метод завершает работу демона аварийно. Даже если какой-то из дочерних процессов не завершены, они будут завершены принудительно

int isActive()

Проверяет, запущен ли демон. Если да, то вернёт PID главного (родительского) процесса. Если нет, то вернёт false.

run()

Запускает работу демона

Управление работой сервера

Обычно методы из секции Служебные методы не используются, а управлять состоянием демона можно непосредственно из консоли. Демон поддерживает следующие консольные команды:

Пример

Создадим скрипт сервера демона под названием test_daemon.php со следующим содержимым:

Чтобы заставить его работать, нужно выполнить команду: php test_daemon.php start.

Для завершения работы нужно вызвать команду: php test_daemon.php stop

Клиент

Клиент может быть инициализирован в любом php скрипте, с помощью экземпляра клиента можно вызывать функции реализованные в модуле сервера с передачей в них параметров. Параметрами могут быть любые атомарные переменные, массивы и некоторые объекты (подробнее об этом можно почитать тут, параметр message , serialize задан в true)

Клиент соединяется с сервером по ID при инициализации. Важно чтобы они совпадали!

Инициализация клиента

Также для удобства поддерживается инициализация через метод Create

Методы клиента

errorHandler($func)

Метод обработки ошибок клиента. Он упрощён если сравнивать его с аналогичным методом сервера. в функцию $func просто передаётся экземпляр ошибки Exception. При этом, если функция задана, то исключение не будет выкинуто

send($module_id, $msg = [])

Метод вызывает функцию сервера с id = $module_id. При этом, в функцию будут переданы параметры из массива $msg.

Этот метод также реализован в виде магического метода. То есть, можно вызывать несуществующие методы клиента, которые реализованы на сервере, и тогда клиент вызовет соответствующий метод на сервере с передачей в него параметров.

Пример

Код сервера:

Код клиента:

В этом примере клиент отправляет сообщение на сервер демона, он это сообщение принимает и записывает в БД


All versions of daemon with dependencies

PHP Build Version
Package Version
Requires php Version >=7.1
ext-sysvmsg Version *
ext-pcntl Version *
ext-posix Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package digitalstars/daemon contains the following files

Loading the files please wait ....