


Analyse de la méthode d'utilisation de la file d'attente de messages et de la file d'attente asynchrone dans le framework Laravel de PHP
Cet article présente principalement la méthode d'utilisation de la file d'attente de messages et de la file d'attente asynchrone dans le framework Laravel de PHP. Pour les versions postérieures à Laravel 5.0, l'exemple d'environnement est le système Linux. Les amis dans le besoin peuvent s'y référer
configuration de la file d'attente
Tout d'abord, laissez-moi vous expliquer comment utiliser la file d'attente dans mon projet précédent. Nos projets actuels utilisent tous symfony, les projets plus anciens utilisent symfony1.4 et les projets plus récents utilisent symfony2. La sensation générale d'utiliser symfony est très agréable, en particulier symfony2, qui utilise généralement de nombreuses idées de conception issues des frameworks Java. Mais il ne prend pas en charge la file d'attente. Dans Symfony, nous avons également parcouru plusieurs processus utilisant la file d'attente. J'ai d'abord utilisé les httpsqs de Zhang Yan. Celui-ci est simple à utiliser, mais il y a des points uniques. Après tout, notre projet sert toujours officiellement le monde extérieur, nous avons donc étudié ActiveMQ, un projet open source sous Apache, et avons découvert qu'il existe un MQ plus récent sous Apache, qui est Apollo. Finalement, nous avons décidé d'utiliser Apollo. Le principal scénario d'application de la file d'attente dans notre projet est de traiter de manière asynchrone certaines fonctions chronophages, telles que la synchronisation des données tierces, la notification synchrone à nos utilisateurs de données tiers des modifications de données, etc. Notre idée générale est la suivante : si un traitement asynchrone est nécessaire dans chaque contrôleur, encodez simplement un objet json et insérez-le dans Apollo. Écrivez une autre commande de travail, analysez l'objet json dans cette commande et appelez différentes méthodes en fonction des actions et des paramètres qu'il contient. Selon les besoins de l'entreprise, exécuter Command sur différentes machines en même temps qu'un processus démon peut également être considéré comme une solution pour implémenter des applications multitâches asynchrones. J'ai continué à l'utiliser jusqu'à ce que je découvre Laravel. Prévoyez de le rechercher. Il n'est pas impossible de le remplacer si possible. héhé. Depuis que je viens de commencer à apprendre, bien sûr, je suis allé directement sur Laravel5. Les routes, les contrôleurs et les vues sont fondamentalement les mêmes que ceux de Symfony, il n'est donc pas difficile de démarrer. Enfin, étudiez la file d’attente.1. Installer laravle et utiliser composer est très simple.
composer global require "laravel/installer=~1.1" vi ~/.bash_profileAjoutez ~/.composer/vendor/bin aux variables d'environnement.
source ~/.bash_profileVous pouvez utiliser Laravel directement depuis la ligne de commande. Essayez-le.
laravel -VSi vous pouvez voir ce qui suit, cela signifie le succès.
Laravel Installer version 1.2.1
2. Créez un projet.
laravel new guagua
3. Configurez Redis et la file d'attente.
4. Créez un contrôleur,
php artisan make:controller DefaultControllerpoussez 100 files d'attente dans la tâche d'action du contrôleur. .
for($i = 0; $i < 100; $i ++) { Queue::push(new SendEmail("ssss".$i)); }
5. Commande pour créer une file d'attente
php artisan make:command SendEmail --queuedModifiez app/Commands/SendEmail.php et ajoutez une variable privée.
protected $msg;Modifiez le constructeur en même temps.
public function __construct($msg) { $this->msg = $msg; }Méthode de poignée modifiée
public function handle() { sleep(4); echo $this->msg."\t".date("Y-m-d H:i:s")."\n"; $this->delete(); }
6. Modifier les itinéraires
Route::get('/', [ 'as' => 'index', 'uses' => 'DefaultController@index' ]);
7. Surveiller la file d'attente
php artisan queue:listenPour vérifier le multitâche, nous ouvrons trois fenêtres en même temps et exécutons la même commande.
8. Démarrez le service avec le serveur intégré de Laravel
php artisan serve --port 8080Ouvrez le navigateur et visitez http. : //localhost:8080/page. Bien sûr, vous pouvez également utiliser nginx, apache, etc. Cependant, diverses configurations sont requises et celles intégrées sont faciles à utiliser. Vous pouvez voir l'état d'exécution de chaque file d'attente dans la console, comme indiqué ci-dessous. Vous pouvez voir que 100 tâches sont réparties à parts égales entre trois emplois.
Lorsque vous poussez la file d'attente dans l'action du contrôleur, il n'y a pas d'exécution asynchrone et elle est toujours exécutée dans le script de l'action. Il a été constaté qu'il s'agissait d'un problème de configuration. Il s'est avéré que non seulement queue.php dans config devait être modifié, mais que les configurations associées dans .evn devaient également être modifiées. Bien que le problème ait été résolu, je ressens toujours une douleur dans mes couilles et je n'arrive pas à la comprendre. Il faut encore apprendre Laravel.
Comment utiliser les files d'attente asynchrones
1. Configuration
La définition de la file d'attente ne sera pas présentée ici. . Il existe deux clés pour utiliser les files d'attente asynchrones :(1)存储队列的地方
(2)执行任务的服务
打开 config/queue.php ,这是Laravel5关于队列的配置文件。首先我们可以通过 default 参数指定默认队列驱动,默认配置是 sync , 这是同步队列,我们要做异步队列首先就要改变这里。假设我们用 database 作为驱动,队列任务将会存放在数据库中,而我们后面会另外启动一个后台服务来处理队列任务,这就是异步方式了。
'default' => 'database'
修改完配置后,我们需要创建一个表来存放队列任务,Laravel5已经在自带artisan命令中内置了一个指令用来生成数据迁移,只需要两条命令即可,当然你得实现配置好数据库连接。
php artisan queue:table php artisan migrate
这样就自动在数据库中创建了 jobs 表。
2.启动队列监听服务
通过下面这条指令启动队列监听服务,它会自动处理 jobs 表中的队列任务:
php artisan queue:listen
在linux中,如果想让它在后台执行,可以这样:
nohup php artisan queue:listen &
3.添加队列任务
关于队列任务的添加,手册里说的比较详细,这里就简单举个例子吧。
首先,通过artisan创建一个队列命令:
php artisan make:command SendEmail --queued
这样会生成 app/Commands/SendEmail.php 这个类文件,这个类会被标识为队列命令,你可以在 handle 方法中写自己的业务逻辑。
在控制器中,可以简单通过 Bus::dispatch 分发任务:
Bus::dispatch(new \App\Commands\SendEmail());
你会发现任务不会立即执行,而是被放到 jobs 表中,由队列监听服务处理。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











La méthode principale de création de fonctions de partage social dans PHP est de générer dynamiquement des liens de partage qui répondent aux exigences de chaque plate-forme. 1. Obtenez d'abord la page actuelle ou les informations d'URL et d'article spécifiées; 2. Utilisez UrLencode pour coder les paramètres; 3. Épisser et générer des liens de partage en fonction des protocoles de chaque plate-forme; 4. Afficher les liens sur l'avant pour que les utilisateurs puissent cliquer et partager; 5. Générez dynamiquement des balises OG sur la page pour optimiser l'affichage du contenu du partage; 6. Assurez-vous d'échapper à la saisie des utilisateurs pour empêcher les attaques XSS. Cette méthode ne nécessite pas d'authentification complexe, a de faibles coûts de maintenance et convient à la plupart des besoins de partage de contenu.

1. La maximisation de la valeur commerciale du système de commentaires nécessite de combiner la livraison précise de la publicité native, les services à valeur ajoutée par l'utilisateur (tels que le téléchargement d'images, les commentaires de recharge), d'influencer le mécanisme d'incitation basé sur la qualité des commentaires et la conformité de la monétisation anonyme des données de données; 2. La stratégie d'audit doit adopter une combinaison de mécanismes de filtrage des mots clés dynamiques pré-audit et de signalement des utilisateurs, complétés par une note de qualité des commentaires pour réaliser une exposition hiérarchique de contenu; 3. Anti-brosses nécessite la construction d'une défense multicouche: la vérification sans capteur RecaptChav3, le robot de reconnaissance de champ de miel, IP et la limite de fréquence d'horodatage empêchent l'arrosage, et la reconnaissance du modèle de contenu marque les commentaires suspects et itéra en continu pour traiter les attaques.

Pour réaliser la correction d'erreur de texte et l'optimisation de la syntaxe avec l'IA, vous devez suivre les étapes suivantes: 1. Sélectionnez un modèle ou une API d'IA appropriée, tels que Baidu, Tencent API ou bibliothèque NLP open source; 2. Appelez l'API via Curl ou Guzzle de PHP et traitez les résultats de retour; 3. Afficher les informations de correction d'erreur dans l'application et permettre aux utilisateurs de choisir d'adopter l'adoption; 4. Utilisez PHP-L et PHP_CODESNIFFER pour la détection de syntaxe et l'optimisation du code; 5. Collectez en continu les commentaires et mettez à jour le modèle ou les règles pour améliorer l'effet. Lorsque vous choisissez AIAPI, concentrez-vous sur l'évaluation de la précision, de la vitesse de réponse, du prix et du support pour PHP. L'optimisation du code doit suivre les spécifications du PSR, utiliser le cache raisonnablement, éviter les requêtes circulaires, revoir le code régulièrement et utiliser x

L'entrée vocale de l'utilisateur est capturée et envoyée au backend PHP via l'API MediaRecorder du JavaScript frontal; 2. PHP enregistre l'audio en tant que fichier temporaire et appelle STTAPI (tel que Google ou Baidu Voice Recognition) pour le convertir en texte; 3. PHP envoie le texte à un service d'IA (comme Openaigpt) pour obtenir une réponse intelligente; 4. PHP appelle ensuite TTSAPI (comme Baidu ou Google Voice Synthesis) pour convertir la réponse en fichier vocal; 5. PHP diffuse le fichier vocal vers l'avant pour jouer, terminant l'interaction. L'ensemble du processus est dominé par PHP pour assurer une connexion transparente entre toutes les liens.

PHP assure l'atomicité de la déduction des stocks via les transactions de base de données et les verrous en ligne de Forupdate pour empêcher la survente élevée élevée en simultation; 2. La cohérence de l'inventaire multiplateforme dépend de la gestion centralisée et de la synchronisation axée sur les événements, combinant des notifications API / WebHook et des files d'attente de messages pour assurer une transmission fiable de données; 3. Le mécanisme d'alarme doit définir un faible inventaire, un inventaire zéro / négatif, des ventes invidables, des cycles de réapprovisionnement et des stratégies de fluctuations anormales dans différents scénarios, et sélectionner Dingtalk, SMS ou les personnes responsables par e-mail en fonction de l'urgence, et les informations d'alarme doivent être complètes et claires pour réaliser l'adaptation et la réponse rapide.

Le rôle principal de Homebrew dans la construction de l'environnement Mac est de simplifier l'installation et la gestion des logiciels. 1. Homebrew gère automatiquement les dépendances et encapsule les processus de compilation et d'installation complexes en commandes simples; 2. Fournit un écosystème de package logiciel unifié pour assurer la normalisation de l'emplacement et de la configuration de l'installation logicielle; 3. Intègre les fonctions de gestion des services et peut facilement démarrer et arrêter les services via BrewServices; 4. Mise à niveau et maintenance des logiciels pratiques et améliore la sécurité et les fonctionnalités du système.

Il existe trois façons principales de définir des variables d'environnement dans PHP: 1. Configuration globale via Php.ini; 2. Passé via un serveur Web (tel que setenv d'Apache ou Fastcgi_param de Nginx); 3. Utilisez la fonction PUTENV () dans les scripts PHP. Parmi eux, PHP.ini convient aux configurations globales et modifiées, la configuration du serveur Web convient aux scénarios qui doivent être isolés et PUTENV () convient aux variables temporaires. Les stratégies de persistance incluent des fichiers de configuration (tels que PHP.ini ou la configuration du serveur Web), les fichiers .env sont chargés de bibliothèque Dotenv et l'injection dynamique de variables dans les processus CI / CD. Les informations sensibles à la gestion de la sécurité doivent être évitées à code dur et il est recommandé de l'utiliser.

Pour permettre aux conteneurs PHP de prendre en charge la construction automatique, le noyau réside dans la configuration du processus d'intégration continue (CI). 1. Utilisez Dockerfile pour définir l'environnement PHP, y compris l'image de base, l'installation d'extension, la gestion de la dépendance et les paramètres d'autorisation; 2. Configurez des outils CI / CD tels que GitLabci et définissez les étapes de construction, de test et de déploiement via le fichier .gitlab-ci.yml pour réaliser une construction, un test et un déploiement automatique; 3. Intégrer des cadres de test tels que PHPUnit pour s'assurer que les tests sont automatiquement exécutés après les modifications du code; 4. Utiliser des stratégies de déploiement automatisées telles que Kubernetes pour définir la configuration de déploiement via le fichier de déploiement.yaml; 5. Optimiser Dockerfile et adopter une construction en plusieurs étapes
