hakanispirli/laravel-shared-worker
Composer 安装命令:
composer require hakanispirli/laravel-shared-worker
包简介
Production-ready Laravel Queue Worker optimized for shared hosting environments - No SSH, No proc_open required
关键字:
README 文档
README
Paylaşımlı (shared) hosting ortamları için geliştirilmiş Laravel Queue Worker paketi.
Bu paket, proc_open, pcntl_signal, symlink gibi fonksiyonların kapalı olduğu sunucularda Laravel Queue sistemini sorunsuz çalıştırır.
Problem
Paylaşımlı sunucularda standart php artisan queue:work komutu çalışmaz çünkü:
proc_openfonksiyonu güvenlik nedeniyle kapalıdır- SSH erişimi genellikle yoktur
- Uzun çalışan process'ler otomatik sonlandırılır
Bu paket, bu kısıtlamaları aşarak queue sistemini cron job ile çalıştırmanızı sağlar.
Kurulum
composer require hakanispirli/laravel-shared-worker
Config dosyasını yayınlamak için (opsiyonel):
php artisan vendor:publish --tag=shared-worker-config
Yapılandırma
1. Queue Driver Ayarı
.env dosyasında:
QUEUE_CONNECTION=database
Jobs tablosu yoksa oluşturun:
php artisan queue:table php artisan migrate
2. Schedule Tanımlaması
Laravel 11 ve üzeri - routes/console.php:
use Illuminate\Support\Facades\Schedule; Schedule::command('queue:shared-worker --max-time=55 --memory=128') ->everyMinute();
Laravel 10 ve altı - app/Console/Kernel.php:
protected function schedule(Schedule $schedule) { $schedule->command('queue:shared-worker --max-time=55 --memory=128') ->everyMinute(); }
3. cPanel Cron Job
cPanel kontrol panelinde Cron Jobs bölümüne gidin ve her dakika çalışacak şekilde ekleyin:
* * * * * /usr/local/bin/php /home/KULLANICI/public_html/artisan schedule:run >> /dev/null 2>&1
Not: PHP yolu sunucunuza göre değişebilir. Hosting firmanızdan öğrenebilirsiniz.
Parametreler
| Parametre | Varsayılan | Açıklama |
|---|---|---|
--max-time |
55 | Maksimum çalışma süresi (saniye) |
--memory |
128 | Maksimum RAM kullanımı (MB) |
--sleep |
3 | Kuyruk boşken bekleme süresi (saniye) |
--queue |
default | İşlenecek kuyruk adı |
--connection |
database | Queue connection |
--tries |
3 | Maksimum deneme sayısı |
--force |
- | Bakım modunda çalıştır |
Ortam Değişkenleri
Tüm ayarlar .env dosyasından özelleştirilebilir:
SHARED_WORKER_MAX_TIME=55 SHARED_WORKER_MEMORY=128 SHARED_WORKER_SLEEP=3 SHARED_WORKER_TRIES=3 SHARED_WORKER_LOCK=file SHARED_WORKER_QUEUE=default SHARED_WORKER_CONNECTION=database
Mail Gönderimi
Queue üzerinden mail göndermek için:
use HakanIspirli\SharedWorker\Jobs\MailJob; use App\Mail\WelcomeMail; // Mail'i queue'ya ekle MailJob::dispatch(new WelcomeMail($user), $user->email); // Belirli bir queue'ya ekle MailJob::dispatch(new WelcomeMail($user), $user->email, 'emails');
Lock Mekanizması
Paket, aynı anda birden fazla worker çalışmasını engeller. Üç farklı yöntem desteklenir:
file- Varsayılan. storage/framework klasörünü kullanır.database- Cache tablosunu kullanır.cache- Laravel cache sistemini kullanır.
SHARED_WORKER_LOCK=file
Çalışma Mantığı
Cron (her dakika)
|
v
schedule:run
|
v
queue:shared-worker
|
v
Lock kontrolü --> Başka worker var mı? --> Evet --> Çık
|
Hayır
v
Job al --> İşle --> Başarılı --> Sil
|
Başarısız
v
Deneme hakkı var mı? --> Evet --> Tekrar kuyruğa ekle
|
Hayır
v
failed_jobs tablosuna yaz
|
v
Süre/Memory kontrolü --> Limit aşıldı mı? --> Evet --> Çık
|
Hayır
v
Tekrar başa dön
Örnek Job
namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; class SendNotification implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public function __construct( public string $message ) {} public function handle(): void { // İşlem kodları } }
Job'u çalıştırmak için:
SendNotification::dispatch('Merhaba!');
Sorun Giderme
Worker çalışmıyor
- Komutu manuel çalıştırın:
php artisan queue:shared-worker - Log dosyasını kontrol edin:
storage/logs/laravel.log - Jobs tablosunu kontrol edin:
SELECT * FROM jobs
Overlapping sorunu
Lock dosyalarını temizleyin:
rm -rf storage/framework/shared-worker-locks/*
Job'lar işlenmiyor
.envdosyasındaQUEUE_CONNECTION=databaseolduğundan emin olunjobstablosunun var olduğunu kontrol edinfailed_jobstablosunu kontrol edin
Lisans
MIT License
Geliştirici
Hakan İspirli - destek@webmarka.com
hakanispirli/laravel-shared-worker 适用场景与选型建议
hakanispirli/laravel-shared-worker 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 01 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「queue」 「cron」 「laravel」 「worker」 「artisan」 「cpanel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 hakanispirli/laravel-shared-worker 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 hakanispirli/laravel-shared-worker 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 hakanispirli/laravel-shared-worker 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Symfony bundle to monitor and execute commands
PHP AMQP Binding Library
A Laravel package to monitor queue jobs.
Scheduling extension for Yii2 framework
Monitoring for scheduled jobs
Temporal frequency library
统计信息
- 总下载量: 4
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 28
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-25