firehed/workers

1.0.0 2017-07-23 21:08 UTC

This package is auto-updated.

Last update: 2024-08-29 04:31:24 UTC


README

一个用于在运行循环中管理工作进程的库。

Build Status

工作进程管理器

任何运行循环的核心是工作进程管理器。它将跟踪执行次数,设置基本的 POSIX 信号处理,以及其他基本基础设施。

工作进程类

实际任务由一个工作进程类执行 - 任何实现 Firehed\Workers\Worker 的类。

getName(): string

这是工作进程类型的标识符。使用 return __CLASS__; 是一个合理的实现,但如果在后台运行时指定工作进程,可能会产生更多的工作。

getNice(): int

进程的 nice 级别,它控制整体系统优先级。一个介于 -20 和 20 之间的数字。-20 是最高优先级(不要设置得这么高,否则可能会使系统无响应);+20 是最低优先级。返回 Worker::NICE_DEFAULT (0) 以不影响优先级。

getProcessTitle(): string

如果此值不为空,则管理器将尝试更新在类似 top 的实用程序中可见的进程标题。并非所有操作系统都支持此功能。

getRunLimit(): int

在执行这么多迭代后退出运行循环。对于可能消耗比期望更多的内存的工作进程,这是一个干净退出很有用的功能。返回 Worker::RUN_LIMIT_UNLIMITED 以不强制限制。

请注意,实现应避免依赖此功能,尽管人们普遍理解 PHP 代码通常在最初设计为围绕网络的“一次性和死亡”模型时会导致资源悬挂。

work(): bool

执行实际工作。这应该获取一个单独的工作并执行它。实现可能从数据库中读取一行,从工作队列中获取一个工作等。

工作进程的 work() 方法仅在未尝试工作(队列中没有内容等)时才应返回 false。如果尝试工作但失败,则应仍然返回 true

在 Docker 中使用:前台工作进程

调用 WorkerManager->runInForeground($name) 在前台运行单个工作进程。这对于围绕容器化(Docker)设计的应用程序来说非常理想,其中已经存在一些高级进程管理器。

强烈建议创建单个工作进程脚本和相关容器,并通过 CLI 参数或环境变量控制要运行的工作进程。