Introduzione
Laravel è un popolare framework per applicazioni Web PHP che semplifica il processo di creazione di applicazioni Web moderne e scalabili. Una delle caratteristiche principali di Laravel è la sua capacità di gestire i lavori in background attraverso il suo sistema di accodamento. I queue worker di Laravel sono progettati per elaborare i lavori in coda in modo asincrono in background, il che può migliorare notevolmente le prestazioni e la reattività della tua applicazione web.
Laravel Queue Worker è un componente del framework PHP Laravel che consente di eseguire in modo asincrono dei lavori (job) all'interno dell'applicazione.
I lavori sono compiti che richiedono tempo per essere completati e che possono essere eseguiti in modo indipendente dal resto dell'applicazione. Questi lavori possono essere ad esempio l'invio di email, l'elaborazione di immagini, la generazione di report, ecc.
Il Laravel Queue Worker consente di inserire questi lavori in una coda (queue) e di eseguirli in modo asincrono, in background, senza bloccare l'esecuzione del resto dell'applicazione. In questo modo, l'applicazione può continuare a funzionare normalmente, anche mentre vengono eseguiti i lavori in background.
Il Laravel Queue Worker è responsabile della gestione della coda dei lavori e dell'esecuzione dei lavori stessi. Viene eseguito come un processo separato dal resto dell'applicazione e può essere configurato per eseguire più processi contemporaneamente, in modo da gestire un grande volume di lavoro.
Il Laravel Queue Worker supporta diversi driver di coda, come ad esempio il database, Redis, Amazon SQS, e altri ancora. Ciò consente di integrare facilmente il sistema di code di Laravel con diversi servizi di coda esterni.
In sintesi, il Laravel Queue Worker è un componente fondamentale per l'elaborazione asincrona di lavori in Laravel, che consente di migliorare le prestazioni e la scalabilità delle applicazioni web che utilizzano questo framework.
Prerequisiti
Prima di iniziare, devi assicurarti che il tuo server soddisfi i seguenti requisiti:
- Un sistema operativo basato su Linux
- PHP versione 7.2 o superiore
- Il framework Laravel installato e configurato
- Il sistema Systemd init installato e configurato
Creare un servizio Systemd
Il primo passo per eseguire i lavoratori della coda di Laravel con Systemd è creare un file di servizio Systemd. Questo file definirà il comportamento del lavoratore in coda e come dovrebbe essere avviato, arrestato e riavviato.
Crea un nuovo file nella directory "/etc/systemd/system/" con un'estensione .service, ad esempio "laravel-worker.service" .
sudo nano /etc/systemd/system/laravel-worker.service
Aggiungi il seguente contenuto al file:
[Unit]
Description=Laravel Queue Worker
After=network.target
[Service]
User=www-data
Group=www-data
Restart=always
WorkingDirectory=/path/to/your/laravel
ExecStart=/usr/bin/php artisan queue:work --sleep=3 --tries=3
[Install]
WantedBy=multi-user.target
Sostituisci "/path/to/your/laravel" con la directory dell'applicazione Laravel. Imposta anche il tuo comando artigiano nelle opzioni "ExecStart" .
Analizziamo questo file e il significato di ciascuna sezione:
- Unità: questa sezione definisce l'unità di servizio e fornisce una breve descrizione di ciò che fa. Il parametro After specifica che il servizio deve essere avviato dopo che è stata raggiunta la destinazione di rete.
- Servizio: questa sezione specifica i dettagli su come eseguire il servizio. I parametri Utente e Gruppo specificano l'utente e il gruppo in cui deve essere eseguito il servizio. Il parametro "Restart" specifica che il servizio deve essere riavviato in caso di arresto o arresto anomalo. Il parametro "ExecStart" specifica il comando che deve essere eseguito per avviare l'operatore della coda. In questo caso, stiamo usando il binario php per eseguire il comando queue:work con le opzioni
--sleep=3
e--tries=3
. Queste opzioni specificano che il lavoratore in coda deve restare inattivo per 3 secondi tra ogni lavoro e deve riprovare i lavori non riusciti fino a 3 volte prima di contrassegnarli come non riusciti. - Installa: questa sezione specifica i livelli di esecuzione in cui il servizio deve essere abilitato. Il parametro WantedBy specifica che il servizio deve essere abilitato nella destinazione multiutente, che è la destinazione predefinita per la maggior parte delle distribuzioni Linux.
Salva il file ed esci dall'editor.
Abilitare il servizio
Per prima cosa esegui il seguente comando per ricaricare il servizio demone systemd. È necessario eseguire questo comando ogni volta che si apportano modifiche al file di servizio.
sudo systemctl daemon-reload
Per garantire che il queue worker di Laravel si avvii automaticamente all'avvio del server, possiamo abilitare il servizio utilizzando il seguente comando:
sudo systemctl enable laravel-worker
Questo comando creerà un collegamento simbolico nella directory appropriata per avviare automaticamente il servizio all'avvio.
Avviare il servizio
Ora che abbiamo creato e attivato il file del servizio Systemd, possiamo avviare il servizio utilizzando il seguente comando:
sudo systemctl start laravel-worker
Questo comando avvierà il lavoratore della coda Laravel come servizio Systemd. Puoi verificare che il servizio funzioni correttamente controllandone lo stato:
sudo systemctl status laravel-worker
Questo comando visualizzerà le informazioni sul servizio, incluso il suo stato corrente e tutte le voci di registro recenti.
Controllare il servizio
Una volta che il servizio è in esecuzione, puoi controllarlo utilizzando i comandi Systemd standard. Ecco alcuni comandi comuni che puoi utilizzare per controllare il servizio di lavoro in coda di Laravel:
sudo systemctl stop laravel-worker
: Questo comando interromperà il servizio.sudo systemctl restart laravel-worker
: Questo comando riavvierà il servizio.sudo systemctl disable laravel-worker
: Questo comando disabiliterà l'avvio automatico del servizio all'avvio.sudo systemctl status laravel-worker
: questo comando visualizzerà lo stato del servizio, incluso se è in esecuzione o arrestato e tutte le voci di registro recenti.
Conclusione
L'esecuzione dei lavoratori in coda di Laravel con Systemd è un ottimo modo per garantire che i processi in background funzionino sempre in modo fluido ed efficiente negli ambienti di produzione. Creando un file di servizio Systemd e abilitandolo all'avvio, puoi automatizzare il processo di avvio e arresto del lavoratore in coda, semplificandone la gestione e il controllo.
In questo articolo, abbiamo trattato i passaggi di base per la creazione di un file di servizio Systemd per il lavoratore della coda di Laravel, l'avvio del servizio, l'abilitazione all'avvio e il controllo tramite i comandi Systemd. Con questa conoscenza, puoi gestire e ridimensionare con sicurezza le tue applicazioni Laravel con facilità.