mefworks / job
Requires
- php: >=5.6
- mefworks/db: >=1.0
- mefworks/log: >=1.0
- pimple/pimple: ~3.0
Requires (Dev)
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-04 23:27:51 UTC
README
mef\Job 提供了作业队列和工作者的接口,以及处理来自后端工作者的作业的工作服务器实现。
示例
入队一个作业
<?php
use mef\Job\JobQueue\JobServer;
use mef\Job\JobStore\DatabaseJobStore;
$jobServer = new JobServer(new DatabaseJobStore($db));
// without a payload
$jobServer->enqueue('job name');
// with a payload
$jobServer->enqueue('job name', ['param1' => 'val1']);
调度一个作业
<?php
use mef\Job\JobQueue\JobServer;
use mef\Job\JobStore\DatabaseJobStore;
$jobServer = new JobServer(new DatabaseJobStore($db));
$jobServer->scheduleJob('job name', ['param1' => 'val1'], new DateTimeImmutable('+5 minutes'));
调度一个重复作业
<?php
use mef\Job\JobQueue\JobServer;
use mef\Job\JobStore\DatabaseJobStore;
$jobServer = new JobServer(new DatabaseJobStore($db));
$jobServer->scheduleJob('job name', ['param1' => 'val1'], new DateTimeImmutable, 'next Tuesday');
一个示例工作者
<?php
use mef\Job\JobInfoInterface;
use mef\Job\Worker\WorkerInterface;
class CopyFileWorker implements WorkerInterface
{
public function runJob(JobInfoInterface $jobInfo)
{
$payload = $jobInfo->getPayload();
if (copy($payload['src'], $payload['dest']) !== true)
{
throw new Exception('Unable to copy file');
}
}
}
运行工作服务器
包含在 bin/job-server.php
中的单线程工作服务器,在进程中运行 PHP 工作者。要并行运行多个工作者,应使用外部进程,例如 supervisord。
工作服务器包含一个在通过 mef\Db 驱动器访问的数据库上运行的实现,但从理论上讲,它可以扩展为将作业传递给其他系统,例如 Gearman 或 Resque。
启动服务器
运行包含的
etc/mysql-schema.sql
复制
etc/default-job-server-config.php
并根据需要修改。有一些内容需要更改:job-id-generator
(返回一个唯一 ID 以分配给新作业的函数)、worker-namespace
(您的工作者所在的命名空间)、jobs-to-run
(要运行的作业名称数组)以及数据库连接信息。运行
bin/job-server.php --config=path-to-config.php
服务器将一直运行,直到收到停止信号(Ctrl-C)。
许可证
版权 (C) 2015 Matthew Leverton
特此授予任何获得本软件及其相关文档文件(“软件”)副本的任何人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许软件提供者根据以下条件这样做:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类责任是基于合同、侵权或其他原因,以及与软件或软件的使用或其他交易有关。