# Laravelda production serverda queue larni sozlash

Xayrli kun, bu maqolada laravelda queue/job larni serverda sozlashni o'rganamiz.

Quyidagi ketma-ketlikda server uchun queue larni sozlash keltirilgan

1. Linux serverga ssh protokoli orqali kiring va o'rnatilgan Laravel loyihasining root papkasiga kirib quyidagi buyruqni kiriting:
    

```php
php artisan queue:table
```

1. Undan so'ng pastda keltirilgan buyruq orqali kerak jadvallarni migratsiya qiling.
    

```php
php artisan migrate
```

1. Endi siz terminal buyruqlari orqali "Job" lar yaratishingiz mumkin. Quyidagi odatdagi job yaratish uchun misol keltirilgan.
    

```php
php artisan make:job SendNotification
```

Yuqoridagi class queue yoki job larni kerakli logika bo'yicha ishlatuvchi controller deb hisoblasak bo'ladi.

Laravelda queuelar uchun turli backend texnolgiyadan foydalanishingiz mumkin masalan Amazon SQS ,redis, yoki relatsion MB.

Endi `.env` faylda laravel queue/job larni yurgizish uchun sozlamalarni o'rnatamiz.

1. `.env` faylda quyidagi paramaterlarni kiritamiz.
    
2. `QUEUE_DRIVER=database` yoki `QUEUE_CONNECTION=database`
    
3. Endi app/Jobs papkasiga o'ting va `SendNotification.php` faylda queue/job uchun o'ylagan logikangizni yozing.
    
4. Http controllerida job:: dispatch orqali kerak joblarni navbatga ishlash uchun qo'yishingiz mumkin.
    
5. Joblar server fonida ishlashi uchun `supervisor` dasturidan foydalanishingiz mumkin buning uchun quyidagi buyruqdan foydalanasiz.
    

```php
apt install supervisor
```

1. Quyidagi papkada joylashgan faylga supervisor dasturchi uchun laravel loyihamiz queue si uchun konfiguratsiyalarni yozamiz:
    

```php
cd /etc/supervisor/conf.d
nano queue-worker.conf
```

**queue-worker.conf**

```php
[program:queue-worker]
process_name = %(program_name)s_%(process_num)02d
command=php /var/www/html/project-folder/artisan queue:listen
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/project-folder/public/worker.log
```

1. Quyidagi buyruq orqali supervisor qayta ishga tushuramiz.
    

```php
supervisorctl reread
```

1. server uchun supervisor buyruqlarni yangilaymiz.
    

```php
supervisorctl update
```
