DaemonApplication

Extends \Joomla\CMS\Application\CliApplication

Class to turn CliApplication applications into daemons. It requires CLI and PCNTL support built into PHP.

abstract
link

https://www.php.net/manual/en/book.pcntl.php

https://www.php.net/manual/en/features.commandline.php

since

1.7.0

Methods

__construct

Class constructor.

__construct(\Joomla\Input\Input $input = null, \Joomla\Registry\Registry $config = null, \Joomla\CMS\Application\CLI\CliOutput $output = null, \Joomla\CMS\Application\CLI\CliInput $cliInput = null, \Joomla\Event\DispatcherInterface $dispatcher = null, \Joomla\DI\Container $container = null) 
inherited
since

1.7.0

Arguments

$input

\Joomla\Input\InputAn optional argument to provide dependency injection for the application's input object. If the argument is a JInputCli object that object will become the application's input object, otherwise a default input object is created.

$config

\Joomla\Registry\RegistryAn optional argument to provide dependency injection for the application's config object. If the argument is a Registry object that object will become the application's config object, otherwise a default config object is created.

$output

\Joomla\CMS\Application\CLI\CliOutputThe output handler.

$cliInput

\Joomla\CMS\Application\CLI\CliInputThe CLI input handler.

$dispatcher

\Joomla\Event\DispatcherInterfaceAn optional argument to provide dependency injection for the application's event dispatcher. If the argument is a DispatcherInterface object that object will become the application's event dispatcher, if it is null then the default event dispatcher will be created based on the application's loadDispatcher() method.

$container

\Joomla\DI\ContainerDependency injection container.

__get

Magic method to access properties of the application.

__get(string $name) : mixed
inherited deprecated
since

4.0.0

deprecated

5.0 This is a B/C proxy for deprecated read accesses

Arguments

$name

stringThe name of the property.

Response

mixedA value if the property name is valid, null otherwise.

bootComponent

Boots the component with the given name.

bootComponent(string $component) : \Joomla\CMS\Extension\ComponentInterface
inherited
since

4.0.0

Arguments

$component

stringThe component to boot.

Response

\Joomla\CMS\Extension\ComponentInterface

bootModule

Boots the module with the given name.

bootModule(string $module, string $applicationName) : \Joomla\CMS\Extension\ModuleInterface
inherited
since

4.0.0

Arguments

$module

stringThe module to boot

$applicationName

stringThe application name

Response

\Joomla\CMS\Extension\ModuleInterface

bootPlugin

Boots the plugin with the given name and type.

bootPlugin(string $plugin, string $type) : \Joomla\CMS\Extension\PluginInterface
inherited
since

4.0.0

Arguments

$plugin

stringThe plugin name

$type

stringThe type of the plugin

Response

\Joomla\CMS\Extension\PluginInterface

changeIdentity

Method to change the identity of the daemon process and resources.

changeIdentity() : boolean
since

1.7.0

see \Joomla\CMS\Application\posix_setuid()

Response

booleanTrue if identity successfully changed

createExtensionNamespaceMap

Allows the application to load a custom or default identity.

createExtensionNamespaceMap() : void
inherited
since

4.0.0

daemonize

Method to put the application into the background.

daemonize() : boolean
since

1.7.0

throws

\RuntimeException

Response

boolean

detach

This is truly where the magic happens. This is where we fork the process and kill the parent process, which is essentially what turns the application into a daemon.

detach() : void
since

3.0.0

throws

\RuntimeException

enqueueMessage

Enqueue a system message.

enqueueMessage(string $msg, string $type = self::MSG_INFO) : void
inherited
since

4.0.0

Arguments

$msg

stringThe message to enqueue.

$type

stringThe message type.

execute

Execute the application.

execute() : void
inherited
since

1.7.0

fork

Method to fork the process.

fork() : integer
since

1.7.0

throws

\RuntimeException

Response

integerThe child process id to the parent process, zero to the child process.

gc

Method to perform basic garbage collection and memory management in the sense of clearing the stat cache. We will probably call this method pretty regularly in our main loop.

gc() : void
since

1.7.0

getCliInput

Get a CLI input object.

getCliInput() : \Joomla\CMS\Application\CLI\CliInput
inherited

getConfig

Retrieve the application configuration object.

getConfig() : \Joomla\Registry\Registry
inherited
since

4.0.0

Response

\Joomla\Registry\Registry

getContainer

Get the DI container.

getContainer() : \Joomla\DI\Container
inherited abstract
since

4.0.0

throws

\Joomla\DI\Exception\ContainerNotFoundExceptionMay be thrown if the container has not been set.

Response

\Joomla\DI\Container

getDispatcher

Get the event dispatcher.

getDispatcher() : \Joomla\Event\DispatcherInterface
inherited abstract
since

4.0.0

throws

\UnexpectedValueExceptionMay be thrown if the dispatcher has not been set.

Response

\Joomla\Event\DispatcherInterface

getIdentity

Get the application identity.

getIdentity() : \Joomla\CMS\User\User
inherited
since

4.0.0

Response

\Joomla\CMS\User\User

getInput

Method to get the application input object.

getInput() : \Joomla\Input\Input
inherited
since

4.0.0

Response

\Joomla\Input\Input

getInstance

Returns a reference to the global CliApplication object, only creating it if it doesn't already exist.

getInstance(string $name = null) : \Joomla\CMS\Application\CliApplication
inherited static deprecated

This method must be invoked as: $cli = CliApplication::getInstance();

since

1.7.0

deprecated

5.0 Load the app through the container

throws

\RuntimeException

Arguments

$name

stringThe name (optional) of the JApplicationCli class to instantiate.

Response

\Joomla\CMS\Application\CliApplication

getLanguage

Method to get the application language object.

getLanguage() : \Joomla\CMS\Language\Language
inherited
since

4.0.0

Response

\Joomla\CMS\Language\LanguageThe language object

getLogger

Get the logger.

getLogger() : \Psr\Log\LoggerInterface
inherited abstract
since

4.0.0

Response

\Psr\Log\LoggerInterface

getMessageQueue

Get the system message queue.

getMessageQueue() : array
inherited
since

4.0.0

Response

arrayThe system message queue.

getOutput

Get an output object.

getOutput() : \Joomla\CMS\Application\CLI\CliOutput
inherited

getSession

Method to get the application session object.

getSession() : \Joomla\Session\SessionInterface
inherited
since

4.0.0

Response

\Joomla\Session\SessionInterfaceThe session object

in

Get a value from standard input.

in() : string
inherited
since

4.0.0

Response

stringThe input string from standard input.

isActive

Check to see if the daemon is active. This does not assume that $this daemon is active, but only if an instance of the application is active as a daemon.

isActive() : boolean
since

1.7.0

Response

booleanTrue if daemon is active.

isCli

Flag if the application instance is a CLI or web based application.

isCli() : boolean
inherited deprecated

Helper function, you should use the native PHP functions to detect if it is a CLI application.

since

4.0.0

deprecated

5.0 Will be removed without replacements

Response

boolean

isClient

Check the client interface by name.

isClient(string $identifier) : boolean
inherited
since

4.0.0

Arguments

$identifier

stringString identifier for the application interface

Response

booleanTrue if this application is of the given type client interface.

loadConfiguration

Load an object or array into the application configuration object.

loadConfiguration(mixed $data) : \Joomla\CMS\Application\DaemonApplication
since

1.7.0

Arguments

$data

mixedEither an array or object to be loaded into the configuration object.

Response

\Joomla\CMS\Application\DaemonApplicationInstance of $this to allow chaining.

loadExtension

Loads the extension.

loadExtension(string $type, string $extensionName, string $extensionPath) : \Joomla\CMS\Extension\ComponentInterface|\Joomla\CMS\Extension\ModuleInterface|\Joomla\CMS\Extension\PluginInterface
inherited
since

4.0.0

Arguments

$type

stringThe extension type

$extensionName

stringThe extension name

$extensionPath

stringThe path of the extension

Response

\Joomla\CMS\Extension\ComponentInterface|\Joomla\CMS\Extension\ModuleInterface|\Joomla\CMS\Extension\PluginInterface

loadIdentity

Allows the application to load a custom or default identity.

loadIdentity(\Joomla\CMS\User\User $identity = null) : $this
inherited
since

4.0.0

Arguments

$identity

\Joomla\CMS\User\UserAn optional identity object. If omitted, a null user object is created.

Response

$this

loadPluginFromFilesystem

Creates a CMS plugin from the filesystem.

loadPluginFromFilesystem(string $plugin, string $type) : \Joomla\CMS\Plugin\CMSPlugin
inherited
since

4.0.0

Arguments

$plugin

stringThe plugin

$type

stringThe type

Response

\Joomla\CMS\Plugin\CMSPlugin

out

Write a string to standard output.

out(string $text = '', boolean $nl = true) : $this
inherited
since

4.0.0

Arguments

$text

stringThe text to display.

$nl

booleanTrue (default) to append a new line at the end of the output string.

Response

$this

pcntlChildExitStatus

Method to return the exit code of a terminated child process.

pcntlChildExitStatus(integer $status) : integer
see \Joomla\CMS\Application\pcntl_wexitstatus()
since

1.7.3

Arguments

$status

integerThe status parameter is the status parameter supplied to a successful call to pcntl_waitpid().

Response

integerThe child process exit code.

pcntlFork

Method to return the exit code of a terminated child process.

pcntlFork() : integer
see \Joomla\CMS\Application\pcntl_fork()
since

1.7.3

Response

integerOn success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution. On failure, a -1 will be returned in the parent's context, no child process will be created, and a PHP error is raised.

pcntlSignal

Method to install a signal handler.

pcntlSignal(integer $signal, callable $handler, boolean $restart = true) : boolean
see \Joomla\CMS\Application\pcntl_signal()
since

1.7.3

Arguments

$signal

integerThe signal number.

$handler

callableThe signal handler which may be the name of a user created function, or method, or either of the two global constants SIG_IGN or SIG_DFL.

$restart

booleanSpecifies whether system call restarting should be used when this signal arrives.

Response

booleanTrue on success.

pcntlWait

Method to wait on or return the status of a forked child.

pcntlWait( &$status, integer $options) : integer
see \Joomla\CMS\Application\pcntl_wait()
since

1.7.3

Arguments

$status

$options

integerIf wait3 is available on your system (mostly BSD-style systems), you can provide the optional options parameter.

Response

integerThe process ID of the child which exited, -1 on error or zero if WNOHANG was provided as an option (on wait3-available systems) and no child was available.

postFork

Method to handle post-fork triggering of the onFork event.

postFork() : void
since

3.0.0

registerEvent

Registers a handler to a particular event group.

registerEvent(string $event, callable $handler) : $this
inherited
since

4.0.0

Arguments

$event

stringThe event name.

$handler

callableThe handler, a function or an instance of an event object.

Response

$this

restart

Restart daemon process.

restart() : void
since

1.7.0

setOutput

Set an output object.

setOutput(\Joomla\CMS\Application\CLI\CliOutput $output) : $this
inherited
since

3.3

Arguments

$output

\Joomla\CMS\Application\CLI\CliOutputCliOutput object

Response

$this

setupSignalHandlers

Method to attach the DaemonApplication signal handler to the known signals. Applications can override these handlers by using the pcntl_signal() function and attaching a different callback method.

setupSignalHandlers() : boolean
since

1.7.0

see \Joomla\CMS\Application\pcntl_signal()

Response

boolean

setUserFactory

Set the user factory to use.

setUserFactory(\Joomla\CMS\User\UserFactoryInterface $userFactory) : void
inherited
since

4.0.0

Arguments

$userFactory

\Joomla\CMS\User\UserFactoryInterfaceThe user factory to use

shutdown

Method to shut down the daemon and optionally restart it.

shutdown(boolean $restart = false) : void
since

1.7.0

Arguments

$restart

booleanTrue to restart the daemon on exit.

signal

Method to handle POSIX signals.

signal(integer $signal) : void
static
since

1.7.0

see \Joomla\CMS\Application\pcntl_signal()
throws

\RuntimeException

Arguments

$signal

integerThe received POSIX signal.

stop

Stop daemon process.

stop() : void
since

1.7.0

triggerEvent

Calls all handlers associated with an event group.

triggerEvent(string $eventName, array|\Joomla\Event\Event $args = array()) : array
inherited deprecated

This is a legacy method, implementing old-style (Joomla! 3.x) plugin calls. It's best to go directly through the Dispatcher and handle the returned EventInterface object instead of going through this method. This method is deprecated and will be removed in Joomla! 5.x.

This method will only return the 'result' argument of the event

since

4.0.0

throws

\InvalidArgumentException

deprecated

5.0

Arguments

$eventName

stringThe event name.

$args

array|\Joomla\Event\EventAn array of arguments or an Event object (optional).

Response

arrayAn array of results from each function call. Note this will be an empty array if no dispatcher is set.

writeProcessIdFile

Method to write the process id file out to disk.

writeProcessIdFile() : boolean
since

1.7.0

Response

boolean

Properties

signals

The available POSIX signals to be caught by default.

static
link

https://www.php.net/manual/pcntl.constants.php

since

1.7.0

Type(s)

array

exiting

True if the daemon is in the process of exiting.

since

1.7.0

Type(s)

boolean

parentId

The parent process id.

since

3.0.0

Type(s)

integer

processId

The process id of the daemon.

since

1.7.0

Type(s)

integer

running

True if the daemon is currently running.

since

1.7.0

Type(s)

boolean

output

Output object

inherited

input

The input.

inherited
since

4.0.0

Type(s)

\Joomla\Input\Input

cliInput

CLI Input object

inherited

language

The application language object.

inherited
since

4.0.0

Type(s)

\Joomla\CMS\Language\Language

messages

The application message queue.

inherited
since

4.0.0

Type(s)

array

instance

The application instance.

inherited static

identity

The application identity object.

inherited
since

4.0.0

Type(s)

\Joomla\CMS\User\User

userFactory

UserFactoryInterface

inherited