Requires
- php: >=5.4.0
- ext-gearman: *
- psr/log: ~1
- react/event-loop: 0.4.*
- symfony/console: 2.*|3.4.*|4.1.*|5.*
Requires (Dev)
- phpunit/phpunit: ~4
This package is auto-updated.
Last update: 2021-06-16 19:01:00 UTC
README
PHP 库,用于分发、处理和管理 Gearman 工作进程
待办事项: 添加对任务的支持,目前仅处理工作。
待办事项: 测试正在运行,但可以覆盖更多。
目录
需求
此库使用 PHP 5.4+、PECL Gearman 和 Gearman 1.0+。
安装
建议您通过 composer 安装 Gearman 库。为此,请将以下行添加到您的 composer.json
文件中。
{ "require": { "websightnl/gearman": "~1.0" } }
配置
该库使用 Config 类在类之间共享配置。
示例
use Sinergi\Gearman\Config; $config = (new Config()) ->addServer('127.0.0.1', 4730) ->setUser('apache');
使用数组示例
或者,您可以使用数组设置配置。
use Sinergi\Gearman\Config; $config = new Config([ 'servers' => ['127.0.0.1:4730', '127.0.0.1:4731'], 'user' => 'apache' ]);
参数
-
string server
Gearman 服务器(例如 127.0.0.1:4730)。 -
array servers
Gearman 服务器池。 -
string bootstrap
引导文件的路径。 -
string class
引导类的完全限定名,该类需要实现Sinergi\Gearman\BootstrapInterface
接口。 -
array env_variables
您想要发送到引导程序的环境变量。 -
string user
Gearman 工作进程将运行的用户(例如 apache)。 -
bool auto_update
仅用于 开发,在执行工作或任务之前自动更新工作进程。 -
string pidFilename
更改创建的 PID 文件名(默认为 gearmanhandler.pid)。文件始终在系统临时路径中创建。 -
string lockFilename
更改创建的锁文件名(默认为 gearmanhandler.lock)。文件始终在系统临时路径中创建。 -
int loopTimeout
更改 ping Gearman 服务器的时间(以毫秒为单位)。默认值为 10 毫秒的低值,出于历史原因。 如果您在 Gearman 服务器上遇到高负载,请更改此值!
引导
文件 /path/to/your/bootstrap.php
use Sinergi\Gearman\BootstrapInterface; use Sinergi\Gearman\Application; class MyBootstrap implements BootstrapInterface { public function run(Application $application) { $application->add(new JobExample()); } }
工作示例
use Sinergi\Gearman\JobInterface; use GearmanJob; class JobExample implements JobInterface { public function getName() { return 'JobExample'; } public function execute(GearmanJob $job) { // Do something } }
分发器使用
要将任务和作业发送到工作者,请使用调度器如下所示:
use Sinergi\Gearman\Dispatcher; $dispatcher = new Dispatcher($config); $dispatcher->execute('JobExample', ['data' => 'value']);
启动工作者守护进程
以守护进程的方式启动工作者。您可以使用类似supervisor的工具确保工作者始终运行。您可以使用与配置中相同的参数。
单个服务器
php vendor/bin/gearman start --bootstrap="/path/to/your/bootstrap.php" --class="MyBootstrap" --server="127.0.0.1:4730"
多个服务器
php vendor/bin/gearman start --bootstrap="/path/to/your/bootstrap.php" --class="MyBootstrap" --servers="127.0.0.1:4730,127.0.0.1:4731"
命令列表
start
stop
restart
与Supervisor的使用
这是一个Supervisor配置的示例。将其添加到您的Supervisor配置文件中(例如:/etc/supervisord.conf)。
[program:mygearman]
command=php /path/to/vendor/bin/gearman start --daemon=false
process_name=%(program_name)s-procnum-%(process_num)s
numprocs=12
autostart=true
autorestart=true