mcfedr/php-resque-scheduler

该软件包已被废弃,不再维护。作者建议使用 mcfedr/queue-manager-bundle 软件包。
该软件包的最新版本(1.4.0)没有提供许可证信息。

php-resque-scheduler 是 resque-scheduler 的 PHP 版本,它为 Resque 添加了对未来项目排程的支持。

1.4.0 2015-09-08 07:09 UTC

This package is auto-updated.

Last update: 2022-02-01 12:35:48 UTC


README

php-resque-scheduler 是 resque-scheduler 的 PHP 版本,它为 Resque 添加了对未来项目排程的支持。

resque-scheduler 的 PHP 版本设计成几乎是 Ruby 插件的直接复制,并与 php-resque 的 PHP 版本一起工作。

目前,php-resque-scheduler 只支持延迟作业,即可以将作业推送到队列并在某个特定时间戳或秒数后运行。计划在未来的版本中支持重复作业(类似于 CRON)。

由于 PHP 版本几乎是 Ruby 版本的直接 API 复制,因此它与 Ruby 版本的 Web 界面兼容,提供查看和管理延迟作业的能力。

要求

  • PHP 5.3+
  • Redis 2.2+
  • PHP-Resque 1.2+
  • 推荐但不强制:Composer

入门

使用 php-resque-scheduler 最简单的方法是在您的项目内部将其作为 Composer 软件包安装。虽然不是强制性的,但 Composer 可以大大简化操作。

如果您不熟悉 Composer,请参阅 https://getcomposer.org.cn/

  1. 将 php-resque-scheduler 添加到应用程序的 composer.json 文件中。

    {
        ...
        "require": {
    		"chrisboulton/php-resque-scheduler": "dev-master",
            "php": ">=5.3.0"
        },
        ...
    }
  2. 运行 composer install

  3. 如果您还没有做,请将 Composer 自动加载添加到项目初始化文件中。(示例)

    require 'vendor/autoload.php';

延迟作业

以下引用自 Ruby resque-scheduler 的文档

延迟作业是你想在未来的某个时间点放入队列的一次性作业。经典例子是发送电子邮件

$in = 3600;
$args = array('id' => $user->id);
ResqueScheduler::enqueueIn($in, 'email', 'SendFollowUpEmail', $args);

上述代码将在延迟队列中存储作业 1 小时,然后从队列中取出作业并提交给 Resque 的 email 队列进行处理,一旦有可用的工作者即可处理。

除了传递以秒为单位的相对时间外,您还可以向 enqueueAt 方法提供时间戳,该时间戳可以是 DateTime 对象或包含 UNIX 时间戳的整数

$time = 1332067214;
ResqueScheduler::enqueueAt($time, 'email', 'SendFollowUpEmail', $args);

$datetime = new DateTime('2012-03-18 13:21:49');
ResqueScheduler::enqueueAt(datetime, 'email', 'SendFollowUpEmail', $args);

注意:resque-scheduler 不能保证作业将在指定的时间触发。在指定的时间,resque-scheduler 将从延迟队列中取出作业并将其推送到 Resque 中相应的队列。下一个可用的 Resque 工作者将选择作业。为了尽可能快地处理,请尽量保持队列为空。

工作者

类似于resque,resque-scheduler也包括一个在后台运行的worker。这个worker负责从调度/延迟队列中拉取项目并将其添加到resque的队列中。这意味着要执行延迟或计划中的作业,worker需要正在运行。

bin/目录中包含了一个基本的“启动运行”的resque-scheduler文件,用于设置运行worker的环境。

启动worker与Ruby版本非常相似

$ LOGGING=1 php bin/resque-scheduler

它接受许多与php-resque相同的环境变量

  • REDIS_BACKEND - 要连接的Redis服务器
  • LOGGING - 启用输出到STDOUT的日志记录
  • VERBOSE - 启用详细日志记录
  • VVERBOSE - 启用非常详细日志记录
  • INTERVAL - 在检查调度/延迟队列之前睡眠这段时间
  • APP_INCLUDE - 启动时包含此文件(用于启动您的应用程序)
  • PIDFILE - 将worker的PID写入此文件

resque-scheduler worker需要resque才能运行。示例resque-scheduler worker使用Composer自动加载器加载Resque.php。

使用包含的示例很容易启动resque-scheduler worker:$ bin/resque-scheduler

事件/钩子系统

php-resque-scheduler使用与php-resque相同的相同事件系统,并公开以下附加事件

afterSchedule

在作业已被添加到计划后调用。传递的参数是时间戳、作业的队列、作业的类名和作业的参数。

beforeDelayedEnqueue

在作业从延迟队列中取出并添加到resque队列之前立即调用。传递的参数是作业的队列、作业的类名和作业的参数。

贡献者