Cet article vous présente principalement la méthode d'implémentation du superviseur pour exécuter des processus asynchrones dans le framework PHP 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 tous les amis qui en ont besoin. jetez un oeil ci-dessous.
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
Redémarrer le superviseur après l'installation : service supervisor restart
2. Configurer 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
Les instructions de processus gérées par le superviseur sont configurées ici pour commencer à surveiller la file d'attente 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 vos pilotes de file d'attente tels 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, ],
4. Écrire des programmes asynchrones
Asynchrone Le programme terminé est écrit dans le répertoire app/job. Créez votre propre classe, telle que Shutdown, et écrivez le constructeur et la fonction handle de la classe. La fonction handle est le processus de calcul du programme.
5. Exécuter une fonction asynchrone
$this->dispatch(new Shutdown($vimd));
Utilisez cette instruction pour créer un programme de fonction asynchrone. .
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!