Ce tutoriel en deux parties guide les débutants sur l'utilisation des files d'attente push avec Laravel pour les tâches d'arrière-plan, illustrées par un exemple de photo et un exemple de redimensionnement. Le redimensionnement des images prend du temps; Cette approche empêche les retards des utilisateurs en déchargeant la tâche. Nous tirons également parti de NGROK pour permettre les tests de file d'attente locaux.
Le code source complet est disponible sur GitHub. Alternativement, déployez sur un serveur en direct pour les tests.
Concepts clés
files d'attente et ironmq
Une file d'attente est un pipeline d'emplois. Les travaux sont traités séquentiellement dans l'ordre où ils sont ajoutés. Pousser les files d'attente, contrairement aux files d'attente de traction, aviser de manière proactive les abonnés lorsqu'un travail est prêt, éliminant le besoin d'un sondage constant. IronMQ est un service qui facilite ce système de file d'attente basé sur la poussée. Lors de la création d'une file d'attente push, vous définissez une URL d'abonnée; IronMQ envoie des données d'emploi à cette URL lorsqu'un travail devient disponible.
Pour une plongée plus profonde dans les files d'attente de travaux et les comparaisons de diverses solutions, reportez-vous à [cet article] (link_to_article_here - Remplacez par un lien réel si disponible).
Configuration et installation
Cette section détaille l'installation de Laravel, ses dépendances, la création d'un compte iron.io et la configuration de Ngrok.
laravel
Installez le compositeur.
Installez Laravel: composer create-project laravel/laravel --prefer-dist
Accédez au répertoire laravel
et exécutez php artisan serve
. Accédez à votre installation de Laravel à http://localhost:8000
.
Configuration de la base de données: utilisez MySQL. Créez une base de données et mise à jour app/config/database.php
avec vos informations d'identification de base de données. Exécuter php artisan migrate:install
.
Modifier app/views/welcome.blade.php
(ou équivalent) pour afficher un message confirmant votre configuration.
Installez les bibliothèques d'images IronMQ et d'intervention: ajoutez-les à votre fichier composer.json
:
"require": { "laravel/framework": "^9.0", // or your Laravel version "iron-io/iron_mq": "^1.4", "intervention/image": "^2.7" },
Run composer update
. Ensuite, configurez le package d'image d'intervention dans config/app.php
en ajoutant le fournisseur de services et alias comme documenté dans la documentation d'image d'intervention.
ngrok
Pour les tests locaux avec IronMQ, utilisez Ngrok pour exposer votre serveur local à Internet.
./ngrok 8000
(ou le port approprié si votre serveur Laravel en utilise un autre). Notez l'URL de transfert (par exemple, http://your-ngrok-url.ngrok.io
). Cette URL agira comme votre URL abonnée. ironmq
Créez un compte et un projet Iron.io.
Obtenez votre identifiant de projet et votre jeton à partir du tableau de bord iron.io.
Configurez vos paramètres de file d'attente Laravel dans config/queue.php
:
'iron' => [ 'driver' => 'iron', 'project' => env('IRON_PROJECT_ID'), 'token' => env('IRON_TOKEN'), 'queue' => 'laravel', ],
Ajouter IRON_PROJECT_ID
et IRON_TOKEN
à votre fichier .env
.
Créez un abonné Push Fitre à l'aide de la commande Artisan:
php artisan queue:subscribe laravel http://your-ngrok-url.ngrok.io/queue/receive
Remplacer http://your-ngrok-url.ngrok.io
par votre URL de transfert Ngrok.
Ajoutez la route suivante à routes/web.php
:
Route::post('queue/receive', function () { return Queue::marshal(); });
Conclusion (partie 1)
Cette pièce couvre la configuration et l'installation des composants nécessaires. La deuxième partie se concentrera sur la création de l'application et la mise en œuvre du travail de redimensionnement de l'image.
Questions fréquemment posées (FAQ) (Cette section reste largement inchangée, car les informations sont toujours pertinentes.)
(La section FAQ existante est bien écrite et précise; aucune modification n'est nécessaire.)
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!