moharram82/queue 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

moharram82/queue

最新稳定版本:v2.0.0

Composer 安装命令:

composer require moharram82/queue

包简介

Queue is a PHP package for executing time-consuming tasks in the background.

README 文档

README

Introduction

This is a PHP Queue package for executing time-consuming tasks in the background.

Requirements

  • PHP 8.1+
  • MySQL 5.6+ (for database driver)

Installation & Configuration

  • Install using composer:
composer require moharram82/php-queue
  • Create the queues table by executing table.sql file
  • Instantiate a new \Moharram82\Queue\QueueConfig instance, which accepts an optional configuration array.
$config = new \Moharram82\Queue\QueueConfig([
    'queue' => 'default',
    'retry_after' => 90, // in seconds
    'table' => 'queues', // database driver table name
]);
  • Instantiate a driver implementation of \Moharram82\Queue\QueueInterface instance like \Moharram82\Queue\MySQLQueue
$database_connection_options = [
    'host' => '127.0.0.1',
    'username' => 'root',
    'password' => '',
    'database' => 'queue',
    'port' => 3306,
];

// create PDO database connection, which is required by `\Moharram82\Queue\MySQLQueue` as first parameter
try { 
    $connection = new PDO(
        "mysql:host={$database_connection_options['host']};dbname={$database_connection_options['database']};port={$database_connection_options['port']};charset=utf8",
        $database_connection_options['username'],
        $database_connection_options['password'],
        [
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET character_set_results=utf8',
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET character_set_client=utf8',
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET character_set_connection=utf8',
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET collation_connection=utf8_general_ci'
        ]
    );
    $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo $e->getMessage();
    die;
}

// pass the connection as first optional parameter or database connection array as second optional parameter, then `\Moharram82\Queue\QueueConfig` as third optional parameter.
// keep in mind, you have to pass at least one of the first and the second parameters.
$config->setDriver(new \Moharram82\Queue\MySQLQueue($connection, [], $config));
  • Instantiate a new \Moharram82\Queue\QueueManager instance
$manager = new \Moharram82\Queue\QueueManager($config);

Usage

Push to Queue

// create a Job class (which is a normal PHP class with a handle method) passing to it the object you want to process.

namespace Example;

class SendEmailJob
{
    public MailMessage $message;

    public function __construct(MailMessage $message)
    {
        $this->message = $message;
    }

    public function handle()
    {
        $this->message->send();
    }
}

$job = new \Example\SendEmailJob(new \Example\MailMessage());

// call the QueueManager instance's push method and pass to it the Job class object with an optional second parameter for the queue name.
$manager->push($job, 'default');

Process the Queue

// call the QueueManager instance's run method.
// You can call the `run` method from a cron job or supervisor process.
$manager->run('default');

Examples

Check the example directory for sample scripts for pushing and processing the queue.

Extending Queue

You can add more drivers by extending the abstract class \Moharram82\Queue\Queue and implementing the interface \Moharram82\Queue\QueueInterface

统计信息

  • 总下载量: 3
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0
  • 更新时间: 2024-03-07