https://github.com/firehed/processmanager
PHP Process Control tools
https://github.com/firehed/processmanager
daemon php php-daemon queue worker-management
Last synced: 19 days ago
JSON representation
PHP Process Control tools
- Host: GitHub
- URL: https://github.com/firehed/processmanager
- Owner: Firehed
- License: mit
- Created: 2013-07-16T06:12:12.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2019-02-26T20:25:50.000Z (about 7 years ago)
- Last Synced: 2025-03-24T09:21:10.799Z (12 months ago)
- Topics: daemon, php, php-daemon, queue, worker-management
- Language: PHP
- Size: 101 KB
- Stars: 45
- Watchers: 6
- Forks: 14
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Process Control Tools
## Requirements
* `posix` and `pcntl` extensions
* PHP5.4+ (Uses modern syntax)
* Basic knowledge of PHP on the command line
# Daemon
A really useful tool with a very boring name. Daemonize your PHP scripts with two lines of code.
## Usage
Code:
setUser('sites')
->setPidFileLocation('/var/run/gearman-manager2.pid')
->setStdoutFileLocation(sys_get_temp_dir().'/my.log')
->setStdErrFileLocation('/dev/null')
->setProcessName(basename(__FILE__).' master process')
->autoRun();
// The rest of your original script
CLI:
php yourscript.php {status|start|stop|restart|reload|kill}
Yes, it's that simple.
### Actions
* Status: Check the status of the process. Returns:
* 0 if running
* 1 if dead but pidfile is hanging around
* 3 if stopped
* Start: Start the daemon
* Stop: Stop the daemon gracefully via SIGTERM
* Restart: Stop (if running) and start
* Reload: Send SIGUSR1 to daemon (you need to implement a reload function, see below)
* Kill: Kill the daemon via SIGKILL (kill -9)
## Options
* `setProcessName($string)`: Set the process name as it will appear in utilities such as `top`. This is only supported under PHP5.5+.
* `setPidFileLocation($path)`: Specify the location of the pid file. This file stores the process id when the daemon is running, and goes away when the daemon stops.
* `setStdoutFileLocation($path)`: File where anything that would have been written to `STDOUT` (`echo`, `print`, etc) goes.
* `setStdErrFileLocation($path)`: File where anything that would have been written to `STDERR` goes. It appears that `display_errors` no longer writes to `STDERR` after daemonizing, so setting this to `/dev/null` is pretty safe.
* `setUser($system_user)`: If you want to have the process run as a lower-security user, specify the username here. This is especially helpful if you start the daemon on system with `chkconfig` and `/etc/init.d`, since those run as root.
To come later(?):
* Verbose output
* Synchronous mode (do not daemonize for debugging)
* Log file configuration
## Useful tips
* STDOUT (echo, print) is redirected to the log file.
* The "reload" command won't do anything without installing a handler for SIGUSR1. Examples are due shortly.
## Known Issues
* STDERR doesn't appear to go anywhere, despite opening a logfile for it.
* The script can't set up "reload" bindings automatically. This is a PHP limitation: "The declare construct can also be used in the global scope, affecting all code following it (**however if the file with declare was included then it does not affect the parent file**)". [http://docs.php.net/manual/en/control-structures.declare.php]()