Comment implémenter la file d'attente en PHP : créez d'abord un nouveau fichier "artisan.php" ; puis exécutez la file d'attente via "php artisan" et enfin entrez dans le client redis et entrez la commande "lpush listname a b c d e f g".
Recommandé : "Tutoriel vidéo PHP"
Le principe de l'implémentation de la file d'attente en PHP (laravel)
Tous ceux qui ont utilisé le framework Laravel savent qu'il est livré avec une fonction de file d'attente. Avant, j'étais confus, PHP n'est qu'un script avec un mécanisme de délai d'attente. Pourquoi pouvons-nous continuer à exécuter la file d’attente ?
Nous créons un nouveau fichier queue.php
<?php while(true){ echo 1; sleep(1); }
puis exécutons php queue.php dans la ligne de commande
Vous constaterez qu'un 1 est affiché toutes les secondes après ; j'attends depuis longtemps, Hé, c'est incroyable, pourquoi php n'expire-t-il pas ?
Oui, il n'expirera pas. Pourquoi ?
R : En fait, les scripts d'exécution PHP n'expireront pas. Les délais d'attente que nous voyons sur les pages Web, tels que 504, sont causés par. Apache Nginx, le délai d'expiration défini dans le fichier de configuration PHP est déterminé. Étant donné que le fichier d'exécution de la ligne de commande PHP n'utilise pas le fichier de configuration PHP, il n'expire pas par défaut.
ps -ef | grep php
Vous constaterez qu'il existe un processus de file d'attente php
Nous avons résolu le problème du timeout php
Jetons un coup d'œil au principe de la file d'attente
Créez un nouveau fichier artisan.php
<?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); while(1){ $res = $redis->lpop('listname'); if($res){echo $res."\r\n";} sleep(1); }
Puis file d'attente d'exécution php artisan
Créons une nouvelle fenêtre, entrons dans le client redis et saisissons la commande suivante
lpush listname a b c d e f g
Vous constaterez que la file d'attente artisan php exécutera continuellement redis. Tapez la valeur que je viens de saisir
En fait, la file d'attente de Laravel est basée sur ce principe, mais elle prend non seulement en charge Redis en tant que support, mais peut également utiliser d'autres bases de données supplémentaires
Quelqu'un le veut, j'ai demandé, mon php artisan.php est démarré si je ferme la fenêtre, cela ne servira-t-il pas à rien ? Non, non, non, Linux peut toujours fonctionner en arrière-plan.
Ajoutez simplement un & après la commande, Ou nohup ... $ peut être exécuté en arrière-plan. Bien sûr, vous pouvez également l'ajouter à la tâche planifiée crontab pour son exécution.
nohup php artisan.php &
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!