In your Laravel Project, create the file stubs/queue.service.stub
with follow content:
[Unit] Description=Laravel Queue Work [Service] User=www-data Group=www-data Restart=always WorkingDirectory={{ $dir }} ExecStart=/usr/bin/php artisan queue:work --sleep=3 --tries=3 [Install] WantedBy=multi-user.target
Now, in your routes/console.php
add the follow code:
Artisan::command('app:install-queue-as-systemd', function () { $content = file_get_contents(base_path('stubs/queue.service.stub')); $content = strtr($content, ['{{ $dir }}' => base_path()]); file_put_contents('/etc/systemd/system/laravel-queue.service', $content); Process::run('systemctl daemon-reload'); Process::run('systemctl enable laravel-queue.service'); Process::run('systemctl start laravel-queue.service'); });
Run php artisan app:install-queue-as-systemd
to generate, install and start your queue:work as systemd
service!
Note: You should be use admin permission to run this command.
Top comments (0)