slince / process
基于 pcntl 和 posix 的进程包装器和进程管理器。
1.0.0
2017-04-28 08:25 UTC
Requires
- php: >=5.5.9
Requires (Dev)
- phpunit/phpunit: ^4.0
Suggests
- ext-pcntl: *
- ext-posix: *
- ext-sysvmsg: Required for system v message queue
- ext-sysvsem: Requiredsystem v semaphore
- ext-sysvshm: Required for system v shared memory
This package is auto-updated.
Last update: 2024-09-13 17:36:54 UTC
README
该库帮助处理进程。它提供了更易读的 API 和通过管道(FIFO)和系统 V 的多种 IPC 模式。
安装
通过 composer 安装
composer require slince/process
依赖项
该库依赖于以下 PHP 扩展。
- ext-pcntl. 提供进程控制(必须)
- ext-sysvshm. 提供系统 V 共享内存(可选)
- ext-sysvsem. 提供系统 V 信号量(可选)
- ext-sysmsg. 提供系统 V 消息队列(可选)
使用方法
基本使用
$process = new Slince\Process\Process(function(){ echo 'hello, my pid is ' . getmypid(); }); $process->start(); var_dump($process->isRunning()); // echo true var_dump($process->getPid()); // will output the pid of child process //do something other $process->wait(); //waiting for the process to exit
向进程发送信号
注意:如果您的 PHP 版本小于 7.1,请在文件开头添加语句
declare(ticks=1);
$process = new Slince\Process\Process(function(){ Slince\Process\Process::current()->signal([SIGUSR1, SIGUSR2], function(){ echo 'trigger signal'; }); echo 'hello, my pid is ' . getmypid(); }); $process->start(); $process->signal(SIGUSER1); //do something $process->wait();
共享内存
$memory = new Slince\Process\SystemV\SharedMemory(); $memory->set('foo', 'bar'); var_dump($memory->get('foo'));
共享内存的默认大小为 php.ini 中的 sysvshm.init_mem,否则为 10000 字节。您可以调整此值。
$memory = new Slince\Process\SystemV\SharedMemory(__FILE__, '5M'); //Adjusts to 5m
信号量
$semaphore = new Slince\Process\SystemV\Semaphore(); $semaphore->acquire(); //Acquires a lock // do something $semaphore->release() //Releases a lock
消息队列
$queue = new Slince\Process\SystemV\MessageQueue(); $queue->send('hello'); echo $queue->receive(); //Will output hello
FIFO
$writeFifo = new Slince\Process\Pipe\WritableFifo('/tmp/test.pipe'); $writeFifo->write('some message'); $readFifo = new Slince\Process\Pipe\ReadableFifo('/tmp/test.pipe'); echo $readFifo->read();
许可证
MIT 许可证。见 MIT