kislayphp / queue
High-performance C++ PHP extension providing distributed message queuing and job processing for PHP microservices
Installs: 1
Dependents: 0
Suggesters: 6
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Language:Shell
Type:php-ext
Ext name:ext-kislayphp_queue
pkg:composer/kislayphp/queue
Requires
- php: >=8.2
Suggests
- kislayphp/config: Configurable queue settings
- kislayphp/core: HTTP/HTTPS server integration
- kislayphp/discovery: Service-aware job routing
- kislayphp/eventbus: Real-time job notifications
- kislayphp/gateway: Queue-aware API gateway
- kislayphp/metrics: Queue performance metrics
Provides
This package is not auto-updated.
Last update: 2026-02-16 05:56:21 UTC
README
A high-performance C++ PHP extension providing distributed message queuing, job processing, and background task management with support for Redis, RabbitMQ, Kafka, and custom backends. Perfect for PHP echo system integration and modern microservices architecture.
โก Key Features
- ๐ High Performance: Ultra-fast message enqueue/dequeue operations
- ๐จ Multiple Protocols: Support for AMQP, Redis, Kafka, and SQS
- ๐ Message Patterns: Queue, pub/sub, request-reply, and delayed messages
- ๐ Monitoring: Queue metrics, throughput tracking, and error handling
- ๐ Retry Logic: Configurable retry policies and dead letter queues
- ๐ Batch Operations: Bulk message processing and batch acknowledgments
- ๐ท๏ธ Message Metadata: Custom headers, priorities, and TTL settings
- ๐ Distributed: Cross-service message routing and load balancing
- ๐ PHP Echo System: Seamless integration with PHP ecosystem and frameworks
- ๐ Microservices Architecture: Designed for distributed PHP applications
๐ฆ Installation
Via PIE (Recommended)
pie install kislayphp/queue
Add to your php.ini:
extension=kislayphp_queue.so
Manual Build
git clone https://github.com/KislayPHP/queue.git
cd queue
phpize
./configure
make
sudo make install
Docker
FROM php:8.2-cli
๐ Quick Start
Basic Queue Operations
<?php // Create queue instance $queue = new KislayQueue(); // Enqueue messages $queue->enqueue('user_notifications', [ 'user_id' => 123, 'type' => 'email', 'template' => 'welcome', 'data' => ['name' => 'John Doe'] ]); $queue->enqueue('order_processing', [ 'order_id' => 'ORD-001', 'action' => 'process_payment', 'amount' => 99.99 ]); // Dequeue messages $message = $queue->dequeue('user_notifications'); if ($message) { processNotification($message); $queue->acknowledge($message['id']); } // Get queue statistics $stats = $queue->getStats('user_notifications'); echo "Queue size: {$stats['size']}\n"; echo "Processing rate: {$stats['rate']}/sec\n";
Message Priorities and TTL
<?php $queue = new KislayQueue(); // High priority message $queue->enqueue('urgent_tasks', [ 'task' => 'security_alert', 'priority' => 10, 'ttl' => 3600 // 1 hour ]); // Delayed message $queue->enqueue('scheduled_tasks', [ 'task' => 'monthly_report', 'delay' => 86400 // 24 hours ]);
Pub/Sub Pattern
<?php $queue = new KislayQueue(); // Publisher $queue->publish('user_events', [ 'event' => 'user_registered', 'user_id' => 123, 'timestamp' => time() ]); // Subscriber $subscription = $queue->subscribe('user_events'); while ($message = $subscription->getMessage()) { handleUserEvent($message); $subscription->acknowledge($message['id']); }
Backend Integration
<?php $queue = new KislayQueue(); // Redis backend $redis = new RedisQueue([ 'host' => 'redis-server', 'port' => 6379, 'password' => 'secret', 'database' => 1 ]); $queue->setBackend($redis); // RabbitMQ backend $rabbitmq = new RabbitMQQueue([ 'host' => 'rabbitmq-server', 'port' => 5672, 'username' => 'guest', 'password' => 'guest', 'vhost' => '/', 'exchange' => 'kislay_exchange' ]); $queue->setBackend($rabbitmq); // Kafka backend $kafka = new KafkaQueue([ 'brokers' => ['kafka-1:9092', 'kafka-2:9092'], 'group_id' => 'kislay-consumers', 'topic_prefix' => 'kislay-' ]); $queue->setBackend($kafka);
Batch Processing
<?php $queue = new KislayQueue(); // Enqueue multiple messages at once $messages = [ ['queue' => 'batch_jobs', 'data' => ['task' => 'job1']], ['queue' => 'batch_jobs', 'data' => ['task' => 'job2']], ['queue' => 'batch_jobs', 'data' => ['task' => 'job3']] ]; $queue->enqueueBatch($messages); // Dequeue multiple messages $batch = $queue->dequeueBatch('batch_jobs', 10); foreach ($batch as $message) { processJob($message); } $queue->acknowledgeBatch(array_column($batch, 'id'));
Error Handling and Retry
<?php $queue = new KislayQueue([ 'retry_policy' => [ 'max_attempts' => 3, 'backoff' => 'exponential', 'initial_delay' => 1000, // ms 'max_delay' => 30000 // ms ], 'dead_letter_queue' => 'failed_jobs' ]); try { $message = $queue->dequeue('processing_queue'); processMessage($message); $queue->acknowledge($message['id']); } catch (Exception $e) { // Message will be retried automatically $queue->nacknowledge($message['id'], $e->getMessage()); }
๐ Documentation
๐ Complete Documentation - API reference, backend configurations, message patterns, and deployment guides
๐๏ธ Architecture
KislayPHP Queue implements a layered messaging architecture:
โโโโโโโโโโโโโโโโโโโ
โ Application โ
โ Producers/ โ
โ Consumers โ
โโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโ
โ Queue โ
โ Manager โ
โ (PHP) โ
โ โ
โ โโโโโโโโโโโ โ
โ โ Message โ โ
โ โ Router โ โ
โ โโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโ โ
โ โ Backend โ โ
โ โ Driver โ โ
โ โโโโโโโโโโโ โ
โโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโ
โ Message โ
โ Brokers โ
โ (Redis/RMQ/ โ
โ Kafka...) โ
โโโโโโโโโโโโโโโ
๐ฏ Use Cases
- Background Jobs: Asynchronous task processing
- Event Streaming: Real-time event processing and analytics
- Microservices Communication: Service-to-service messaging
- Load Leveling: Handle traffic spikes and batch processing
- Workflow Orchestration: Complex business process automation
- Data Pipeline: ETL operations and data transformation
๐ Performance
Queue Performance Benchmark:
==========================
Messages/Second: 100,000
Average Latency: 0.5 ms
P95 Latency: 2.1 ms
Memory Usage: 18 MB
Throughput: 50 MB/sec
Concurrent Consumers: 100
Message Size: 1-10 KB
๐ง Configuration
php.ini Settings
; Queue extension settings kislayphp.queue.max_connections = 100 kislayphp.queue.message_timeout = 300 kislayphp.queue.batch_size = 100 kislayphp.queue.retry_attempts = 3 ; Redis settings kislayphp.queue.redis_host = "localhost" kislayphp.queue.redis_port = 6379 ; RabbitMQ settings kislayphp.queue.rabbitmq_host = "localhost" kislayphp.queue.rabbitmq_port = 5672 ; Kafka settings kislayphp.queue.kafka_brokers = "localhost:9092"
Environment Variables
export KISLAYPHP_QUEUE_BACKEND=redis export KISLAYPHP_QUEUE_REDIS_HOST=redis-server:6379 export KISLAYPHP_QUEUE_RABBITMQ_HOST=rabbitmq:5672 export KISLAYPHP_QUEUE_KAFKA_BROKERS=kafka:9092 export KISLAYPHP_QUEUE_MAX_CONNECTIONS=100 export KISLAYPHP_QUEUE_BATCH_SIZE=50
๐งช Testing
# Run unit tests php run-tests.php # Test queue operations cd tests/ php test_queue_operations.php # Test backend integration php test_redis_backend.php # Performance tests php test_throughput.php
๐ค Contributing
We welcome contributions! Please see our Contributing Guide for details.
๐ License
Licensed under the Apache License 2.0.
๐ Support
- ๐ Documentation
- ๐ Issue Tracker
- ๐ฌ Discussions
- ๐ง Security Issues
SEO Keywords
PHP, microservices, PHP echo system, PHP extension, C++ PHP extension, PHP message queue, PHP job queue, PHP background jobs, PHP Redis queue, PHP RabbitMQ, PHP Kafka, PHP AMQP, PHP pub/sub, distributed PHP messaging
๐ Roadmap
- Message encryption
- Schema validation
- Message tracing
- Consumer groups
- Message scheduling
- Queue federation
๐ Acknowledgments
- Redis: In-memory data structure store
- RabbitMQ: Message broker
- Apache Kafka: Event streaming platform
- PHP: Zend API for extension development
Built with โค๏ธ for reliable PHP messaging