derywat / php-processes-watchdog
Process manager and watchdog for derywat/php-processes.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/derywat/php-processes-watchdog
Requires
- derywat/php-events: ^0.1.0
- derywat/php-processes: ^0.1.0
README
Provides methods for managing processes collection.
Starting processes
Process starts by calling addProcess method on watchdog instance (singleton).
Multiple processes can be started anytime instance exists.
Process will be restarted automatically if in case of exit without using removeProcess method.
use derywat\processesWatchdog\ProcessesWatchdog; $processes = ProcessesWatchdog::getInstance(); $restartWaitSeconds = 30; $processes->addProcess( 'uniqueProcessNameOrId', function($socket){ //child process code }, $restartWaitSeconds );
Handling interprocess messaging
By default process end messages are filtered out in processMessages methods result. To include process end messages call processMessages() with parameter equal true.
use derywat\processesWatchdog\ProcessesWatchdog; $processes = ProcessesWatchdog::getInstance(); $messages = $processes->processMessages(); if(!empty($messages)){ //handle messages here }
Ending processes
Process is scheduled for ending and termination signal is send to process by calling removeProcess method. Process finished message is sent on process end.
use derywat\processesWatchdog\ProcessesWatchdog; $processes = ProcessesWatchdog::getInstance(); $processes->removeProcess('uniqueProcessNameOrId');
Ending all managed processes and waiting for finish
use derywat\processesWatchdog\ProcessesWatchdog; $processes = ProcessesWatchdog::getInstance(); $processes->removeAllProcesses(); while(!$processes->allProcessesEnded()){ $processes->processAndHandleMessages($messagesHandler); usleep(100000); }
Watchdog events
Watchdog sends events on start, stop, scheduled restart and restart of process. Event object is of class ProcessesWatchdogEvent.
use derywat\processesWatchdog\ProcessesWatchdog; $processes = ProcessesWatchdog::getInstance(); $processes->registerEventReceiver((new EventsReceiver())->addEventHandlerClosure( function(ProcessesWatchdogEvent $event) use ($logger) { $message = $event->getMessage(); $actionId = $event->getAction(); $actionName = $event->getgetActionName(); //watchdog event handling code } ));