PHPackages                             hakanispirli/laravel-shared-worker - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. hakanispirli/laravel-shared-worker

ActiveLibrary[Queues &amp; Workers](/categories/queues)

hakanispirli/laravel-shared-worker
==================================

Production-ready Laravel Queue Worker optimized for shared hosting environments - No SSH, No proc\_open required

v1.0.0(3mo ago)01MITPHPPHP ^8.2

Since Jan 25Pushed 3mo agoCompare

[ Source](https://github.com/hakanispirli/laravel-shared-worker)[ Packagist](https://packagist.org/packages/hakanispirli/laravel-shared-worker)[ Docs](https://github.com/hakanispirli/laravel-shared-worker)[ RSS](/packages/hakanispirli-laravel-shared-worker/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (5)Versions (2)Used By (0)

Laravel Shared Worker
=====================

[](#laravel-shared-worker)

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
-------

[](#problem)

Paylaşımlı sunucularda standart `php artisan queue:work` komutu çalışmaz çünkü:

1. `proc_open` fonksiyonu güvenlik nedeniyle kapalıdır
2. SSH erişimi genellikle yoktur
3. 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
-------

[](#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
------------

[](#yapılandırma)

### 1. Queue Driver Ayarı

[](#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ı

[](#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

[](#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
------------

[](#parametreler)

ParametreVarsayılanAçıklama`--max-time`55Maksimum çalışma süresi (saniye)`--memory`128Maksimum RAM kullanımı (MB)`--sleep`3Kuyruk boşken bekleme süresi (saniye)`--queue`defaultİşlenecek kuyruk adı`--connection`databaseQueue connection`--tries`3Maksimum deneme sayısı`--force`-Bakım modunda çalıştırOrtam Değişkenleri
------------------

[](#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
--------------

[](#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ı
----------------

[](#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ığı
---------------

[](#ç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
---------

[](#ö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
-------------

[](#sorun-giderme)

**Worker çalışmıyor**

1. Komutu manuel çalıştırın: `php artisan queue:shared-worker`
2. Log dosyasını kontrol edin: `storage/logs/laravel.log`
3. Jobs tablosunu kontrol edin: `SELECT * FROM jobs`

**Overlapping sorunu**

Lock dosyalarını temizleyin:

```
rm -rf storage/framework/shared-worker-locks/*
```

**Job'lar işlenmiyor**

1. `.env` dosyasında `QUEUE_CONNECTION=database` olduğundan emin olun
2. `jobs` tablosunun var olduğunu kontrol edin
3. `failed_jobs` tablosunu kontrol edin

Lisans
------

[](#lisans)

MIT License

Geliştirici
-----------

[](#geliştirici)

Hakan İspirli -

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance80

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

106d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/638f5b6295f2c4dea4c2ea2549fe86682cdd0481bc6c6712edeee9e263d60a5b?d=identicon)[webmarka360](/maintainers/webmarka360)

---

Top Contributors

[![hakanispirli](https://avatars.githubusercontent.com/u/119450201?v=4)](https://github.com/hakanispirli "hakanispirli (1 commits)")

---

Tags

laravellaravel 11laravel 12artisanqueuecronworkerbackground-jobscpanelmail queueshared hostingno-proc-open

### Embed Badge

![Health badge](/badges/hakanispirli-laravel-shared-worker/health.svg)

```
[![Health](https://phpackages.com/badges/hakanispirli-laravel-shared-worker/health.svg)](https://phpackages.com/packages/hakanispirli-laravel-shared-worker)
```

###  Alternatives

[foxxmd/laravel-elasticbeanstalk-queue-worker

Deploy your Laravel application as a queue worker on AWS ElasticBeanstalk

5493.5k](/packages/foxxmd-laravel-elasticbeanstalk-queue-worker)[pmatseykanets/artisan-beans

Easily manage your Beanstalkd job queues right from the Laravel artisan command

4482.1k](/packages/pmatseykanets-artisan-beans)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
