rumd3x/php-queues

一个用于在php中管理队列的简单驱动程序。

1.0.0 2018-12-02 23:26 UTC

This package is auto-updated.

Last update: 2024-09-29 05:48:32 UTC


README

一个优雅且易于使用的PHP工具,用于处理队列和脚本执行,避免重叠。

安装

要使用composer安装,只需运行

  composer require rumd3x/php-queues

用法

添加队列

有三种方法可以将脚本添加到执行队列中。

第一种是将要执行的php脚本的完整路径传递过去

use Rumd3x\Queues\Queue;
$queue = new Queue(Queue::ACTION_RUN_FILE);
$queue->setAction('/var/www/test.php')->pushTo('example_queue');

其他两种需要传递PHP类的完整命名空间。

ACTION_RUN_STATIC动作类型将尝试在类上静态调用run方法

use Rumd3x\Queues\Queue;
$queue = new Queue(Queue::ACTION_RUN_STATIC);
$queue->setAction("\\App\\Synchronizer")->pushTo('sync');
// This is equal to calling \App\Synchronizer::run();

ACTION_RUN_INSTANCE动作类型将在实例化类后尝试调用run方法

use Rumd3x\Queues\Queue;
$queue = new Queue(Queue::ACTION_RUN_INSTANCE);
$queue->setAction("\\App\\Synchronizer")->pushTo('sync');
// This is equal to doing 
// $sync = new \App\Synchronizer;
// $sync->run();

运行队列

您应在php脚本中添加以下代码并无限期运行它

use Rumd3x\Queues\QueueManager;
$manager = QueueManager::getInstance();
while (true) {
    $manager->runAll();
}

或者,您也可以为每个队列创建多个执行器,使它们并行运行。

use Rumd3x\Queues\QueueManager;
$manager = QueueManager::getInstance();
while (true) {
    $manager->run('example_queue');
}

管理队列

您还可以在执行过程中检查队列的当前状态。

use Rumd3x\Queues\QueueManager;
use Rumd3x\Queues\Queue;

$manager = QueueManager::getInstance();

$queue = new Queue(Queue::ACTION_RUN_FILE);
$queue->setAction('/var/www/test.php');

$manager->isQueued($queue); // returns true or false
$manager->isRunning($queue); // returns true or false
$manager->isQueueFree('sync'); // returns true or false