smuuf/celery-for-php 问题修复 & 功能扩展

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

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

smuuf/celery-for-php

最新稳定版本:0.4

Composer 安装命令:

composer require smuuf/celery-for-php

包简介

A modern Celery client for modern PHP.

README 文档

README

PHP tests

A modern PHP client library for Celery - Distributed Task Queue.

Requirements

  • PHP 8.0+

Installation

Install celery-for-php via Composer.

composer require smuuf/celery-for-php

Redis (Predis)

If you want to use Redis as a broker and/or result backend, celery-for-php contains a Redis driver backed by Predis.

The Predis Client object then needs to be wrapped in our Smuuf\CeleryForPhp\Drivers\PredisRedisDriver driver object, which provides the necessary interface for celery-for-php's actual communication with Redis.

Example usage

<?php use Predis\Client as PredisClient; use Smuuf\CeleryForPhp\Celery; use Smuuf\CeleryForPhp\TaskSignature; use Smuuf\CeleryForPhp\Brokers\RedisBroker; use Smuuf\CeleryForPhp\Drivers\PredisRedisDriver; use Smuuf\CeleryForPhp\Backends\RedisBackend; $predis = new PredisClient(['host' => '127.0.0.1']); $redisDriver = new PredisRedisDriver($predis); $celery = new Celery( new RedisBroker($redisDriver), new RedisBackend($redisDriver), // Optionally explicit config object. // config: new \Smuuf\CeleryForPhp\Config(...) ); $task = new TaskSignature( taskName: 'my_celery_app.add_numbers', queue: 'my_queue', // Optional, 'celery' by default. args: [1, 3, 5], // kwargs: ['arg_a' => 123, 'arg_b' => 'something'], // eta: 'now +10 minutes', // ... or more optional arguments. ); // Send the task into Celery. $asyncResult = $celery->sendTask($task); // Wait for the result (up to 10 seconds by default) and return it. // Alternatively a \Smuuf\CeleryForPhp\Exc\CeleryTimeoutException exception will // be thrown if the task won't finish in time. $result = $asyncResult->get(); // $result === 9

AMQP/RabbitMQ (PhpAmqpLib)

You can use AMQP/RabbitMQ as the broker instead, with Redis as the backend. celery-for-php contains a AMQP driver backed by PhpAmqpLib.

The PhpAmqpLib AMQPConnection or AMQPSSLConnection object needs to be wrapped in our Smuuf\CeleryForPhp\Drivers\PhpAmqpLibAmqpDriver driver object, which provides the necessary interface for celery-for-php's actual communication via AMQP.

Example usage

<?php use Predis\Client as PredisClient; use Smuuf\CeleryForPhp\Celery; use Smuuf\CeleryForPhp\TaskSignature; use Smuuf\CeleryForPhp\Brokers\AmqpBroker; use Smuuf\CeleryForPhp\Drivers\PredisRedisDriver; use Smuuf\CeleryForPhp\Drivers\PhpAmqpLibAmqpDriver; use PhpAmqpLib\Connection\AMQPSSLConnection; use Smuuf\CeleryForPhp\Backends\RedisBackend; //$amqpConn = new AMQPConnection(['127.0.0.1', '5672', '', '', '/']); $amqpConn = new AMQPSSLConnection(['127.0.0.1', '5672', '', '', '/', ['verify_peer'=>false]]); $amqpDriver = new PhpAmqpLibAmqpDriver($amqpConn); $predis = new PredisClient(['host' => '127.0.0.1']); $redisDriver = new PredisRedisDriver($predis); $celery = new Celery( new AmqpBroker($amqpDriver), new RedisBackend($redisDriver), // Optionally explicit config object. // config: new \Smuuf\CeleryForPhp\Config(...) ); $task = new TaskSignature( taskName: 'my_celery_app.add_numbers', queue: 'my_queue', // Optional, 'celery' by default. args: [1, 3, 5], // kwargs: ['arg_a' => 123, 'arg_b' => 'something'], // eta: 'now +10 minutes', // ... or more optional arguments. ); // Send the task into Celery. $asyncResult = $celery->sendTask($task); // Wait for the result (up to 10 seconds by default) and return it. // Alternatively a \Smuuf\CeleryForPhp\Exc\CeleryTimeoutException exception will // be thrown if the task won't finish in time. $result = $asyncResult->get(); // $result === 9

统计信息

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

GitHub 信息

  • Stars: 19
  • Watchers: 3
  • Forks: 4
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04