Maison > développement back-end > tutoriel php > Implémenter un superviseur pour exécuter un processus asynchrone dans le framework php Laravel

Implémenter un superviseur pour exécuter un processus asynchrone dans le framework php Laravel

陈政宽~
Libérer: 2023-03-11 20:38:01
original
1553 Les gens l'ont consulté

Cet article vous présente principalement la méthode du framework PHP d'implémentation d'un superviseur pour exécuter des processus asynchrones dans Laravel. L'introduction dans l'article est très détaillée. Je pense qu'elle a une certaine valeur de référence et d'apprentissage pour tout le monde. Les amis qui en ont besoin peuvent suivre. Jetons un coup d’œil ensemble.

Description du problème

Lorsque vous utilisez le framework Laravel pour implémenter des pages Web dynamiques, si certaines opérations nécessitent une grande quantité de calcul, afin Pour ne pas affecter l'expérience utilisateur, il est souvent nécessaire d'utiliser un traitement asynchrone. Ceci est implémenté à l'aide des files d'attente fournies avec Supervisor et Laravel. Jetons un coup d'œil à l'introduction détaillée :

Superviseur

Superviseur (http://supervisord.org) est un processus écrit en Python Les outils de gestion peuvent être facilement utilisés pour démarrer, redémarrer et arrêter des processus (pas seulement les processus Python). En plus de contrôler un seul processus, vous pouvez également démarrer et arrêter plusieurs processus en même temps. Par exemple, malheureusement, un problème de serveur entraîne la suppression de toutes les applications. À ce stade, vous pouvez utiliser le superviseur pour démarrer toutes les applications. en même temps au lieu de taper les commandes une par une.

La méthode est la suivante

1. Installer le superviseur

 apt-get install supervisor
Copier après la connexion

Installation terminée Puis redémarrez le superviseur : service supervisor restart

2. Configurez le fichier du superviseur

[program:laravel]
process_name=%(program_name)s_%(process_num)02d
command=php {{ app.root }}/artisan queue:listen
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile={{ app.root }}/storage/logs/queque.log
Copier après la connexion

Voici les instructions du processus gérées par le superviseur. , qui sont utilisés pour démarrer la file d'attente de surveillance Laravel. Le nombre de processus et l'adresse du journal des erreurs sont également spécifiés.

3. Configuration de la file d'attente

Avant d'écrire le code de la file d'attente, vous devez configurer la file d'attente. Son emplacement de configuration est dans config/queue.PHP. vous devez configurer votre pilote de file d'attente , tel que la base de données, Redis, la synchronisation, etc. Différentes options ont des configurations correspondantes. Je choisis redis pour la configuration ici.

Par exemple :

'redis' => [
  'driver' => 'redis',
  'connection' => env('QUEUE_CONNECTION', 'default'),
  'queue' => 'wordtohtml',
  'expire' => 600,
 ],
Copier après la connexion

4. Écrivez un programme asynchrone

Écrivez le programme asynchrone dans le répertoire app/job et créez-en un nouveau Pour votre propre classe, par exemple : Shutdown, écrivez le constructeur et gérez la fonction de la classe. La fonction handle est le processus de calcul du programme.

5. Exécuter la fonction asynchrone

$this->dispatch(new Shutdown($vimd));
Copier après la connexion

Utilisez cette instruction pour créer un programme asynchrone.

Résumé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal