Cet article vous apporte les connaissances pertinentes sur laravel Il présente principalement les files d'attente Laravel, dans quelles circonstances utiliser les files d'attente, configurer le stockage des files d'attente et d'autres problèmes connexes. J'espère qu'il sera utile à tout le monde.
【Recommandation associée : Tutoriel d'apprentissage de Laravel】
Cet article présentera comment utiliser les files d'attente dans Laravel et comprendra pourquoi les files d'attente sont utilisées
Prend du temps, comme télécharger un fichier puis effectuer certaines conversions de format, etc.
Si vous devez assurer le débit de livraison, comme l'envoi d'un message texte, parce que vous devez appeler l'API de quelqu'un d'autre, il y a toujours un risque d'échec, donc afin d'assurer la livraison, il est essentiel de réessayer.
Enregistrez le processus d'utilisation :
Le fichier de configuration de la file d'attente est stocké dans config/queue.php. La valeur par défaut est le traitement de synchronisation. Vous pouvez choisir ici la méthode d'utilisation. est la suivante.
Base de données
Créez une tâche de stockage de table de données et exécutez la migration des données après avoir exécuté la commande artisanale
php artisan queue:table php artisan migrate
Redis
Pour utiliser le pilote de file d'attente Redis, vous devez configurer la connexion à la base de données Redis dans votre fichier de configuration config/ base de données.php.
Si votre connexion à la file d'attente Redis utilise le cluster Redis, le nom de votre file d'attente doit contenir la balise de hachage de clé. Ceci permet de garantir que toutes les clés Redis d'une file d'attente donnée sont placées dans le même hachage :
'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => 'default', 'retry_after' => 90, ],
La classe de tâches de la file d'attente est dans le répertoire app/Jobs/
php artisan make : job SaveBusLine
Modifiez le fichier comme suit :
namespace App\Jobs; use App\Http\Repository\BusRepository; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; class SaveBusLine implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * 任务最大尝试次数。 * * @var int */ public $tries = 3; /** * 任务运行的超时时间。 * * @var int */ public $timeout = 60; private $datum; /** * Create a new job instance. * @param array|object $datum * * @return void */ public function __construct($datum) { $this->datum = $datum; } /** * Execute the job. * * @return void */ public function handle() { BusRepository::getInstent()->updateBusLine($this->datum); } }
Appelez la méthode de file d'attente dans le contrôleur ou l'entrepôt :
use App\Jobs\SaveBusLine; use Carbon\Carbon; /***************** 队列操作 start *******************/ SaveBusLine::dispatch($arrayData)->delay(Carbon::now()->addMinute(1)); /***************** 队列操作 end *******************/
php artisan queue:work
Superviseur Il s'agit d'un logiciel de surveillance des processus sur le système d'exploitation Linux qui redémarre automatiquement les commandes queue:listen ou queue:work après leur échec. Pour installer Supervisor sur Ubuntu, vous pouvez utiliser la commande suivante :
sudo apt-get install supervisor
Configuration du superviseur
Les fichiers de configuration du superviseur sont généralement placés dans le répertoire /etc/supervisor/conf.d. Dans ce répertoire, vous pouvez créer n'importe quel nombre de fichiers de configuration pour indiquer au superviseur comment surveiller vos processus. Par exemple, nous créons un laravel-worker.conf pour démarrer et surveiller un processus queue:work :
[program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php ~/laravel/artisan queue:work redis --sleep=3 --tries=3 autostart=true autorestart=true user=lisgroup numprocs=8 redirect_stderr=true stdout_logfile=/home/lisgroup/logs/worker.log
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start laravel-worker:*
php artisan queue:failed-table php artisan migrate
php artisan queue:work redis --tries=3
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!