Maison >développement back-end >tutoriel php >PHP asynchrone
Async signifie ici Asynchrone, ce qui signifie que le processus n'est pas synchrone. Asynchrone permet l'exécution parallèle du code. Cela signifie que nous pouvons exécuter le morceau de code séparément et indépendamment les uns des autres. C'est ce qu'on appelle généralement le processus asynchrone, et c'est la même chose en PHP. Nous avons le modèle Async en PHP, qui nous permet d'exécuter plusieurs tâches simultanément. Cela rend l'exécution du code plus rapide et augmente également les performances.
PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulésCommencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Syntaxe :
En PHP, nous pouvons utiliser le package Spatie pour utiliser la fonctionnalité async. Avec ce package, nous pouvons créer un pool qui gérera notre appel asynchrone et nous aidera à assurer l'exécution parallèle du programme. Pour une meilleure compréhension, nous pouvons jeter un œil à la syntaxe. Voir ci-dessous ;
//package to be used use Spatie\Async\Pool; $mypool = Pool::create(); $mypool[] = async() { //your logic goes here })->then() { // your logic });
Tout d’abord, nous devons importer le package, qui est ici « SpatieAsyncPool ». Après cela, nous créons un pool qui gérera les opérations asynchrones pour nous. Suivi du mot-clé « async » à l'intérieur, nous écrirons toute notre logique et notre morceau de code que nous souhaitons exécuter en parallèle. Nous avons ici une méthode « alors », qui est une méthode de rappel. À l’intérieur de cela, nous pouvons également écrire notre propre logique. Après toutes les opérations, nous pouvons écrire plus d'opérations sur la sortie donnée dans le bloc « alors ».
Nous savons maintenant que la fonction async nous permet l'exécution de plusieurs tâches. Si nous parlons de programmation synchrone en PHP, nous aurons donc toujours une sortie dans le même ordre. supposons que nous voulions imprimer le nombre de 1 à 10. Donc, si j'écris cette logique en utilisant le code synchrone, je l'obtiendrai toujours par ordre croissant. Mais si nous essayons d'utiliser le code asynchrone ici pour la même logique, alors nous ne sommes pas sûrs de l'ordre des nombres. Nous en discuterons plus en détail avec quelques exemples ci-dessous. Pour écrire le code asynchrone en PHP, nous avons utilisé un package appelé « spatie ». Cela nous permet également une meilleure gestion des erreurs et des exceptions dans le code asynchrone. Tout d’abord, nous verrons comment écrire une logique simple en utilisant ce package. Ensuite, nous discuterons en détail des autres méthodes qui peuvent être utilisées avec du code asynchrone plus tard.
Exemple :
use Spatie\Async
cmd :
composer require spatie
Exemple :
$mypool = Pool::create();
Nous pouvons donner n'importe quel nom à l'objet piscine. n'oubliez pas non plus d'importer la classe Pool présente dans 'Async'. Voir ci-dessous ;
Exemple :
use Spatie\Async\Pool;
Exemple :
demoAsync(function () { // // }) ->then(function ($output) { // // })
Dans le morceau de code ci-dessus, nous créons une fonction asynchrone et utilisons sa méthode de rappel « then ». Cette fonction « then » est chargée de fonctionner lorsque le bloc de code ci-dessus est exécuté avec succès. Sinon, nous devons gérer ce cas en utilisant d'autres méthodes Async.
Nous allons maintenant voir quelques méthodes pour gérer les erreurs, les exceptions et les délais d'attente qui peuvent survenir lors de l'exécution du code. Ce package nous fournit diverses méthodes pour gérer cela dans le bloc asynchrone du code. Discutons de chacun d’eux en détail. Voir ci-dessous ;
La méthode sera exécutée lorsque le bloc de code ne parvient pas à effectuer ses opérations dans le délai prévu ou rencontre une erreur. Voici la syntaxe pour écrire cette méthode :
Exemple :
timeout(function () { // when timeout reached. })
La méthode sera exécutée si le bloc de code est exécuté avec succès et qu'il est nécessaire d'effectuer des opérations supplémentaires sur le résultat. Voici la syntaxe pour écrire cette méthode :
Exemple :
then(function ($result) { // operation after result })
Cette méthode sera exécutée si le bloc de code lève une exception. Dans cette méthode, nous pouvons les gérer et exécuter notre logique. La syntaxe pour écrire cette méthode est indiquée ci-dessous ;
Exemple :
catch(function ($exp) { // exception can be handle here. })
Following are the examples given below:
In this example, we are implementing async with the method and printing two messages to keep it simple for beginners.
Code:
use Spatie\Async\Pool; $mypool = Pool::create(); $mypool ->asyncDemo(function () { print("async called here !!") }) ->then(function () { print("then called after result !!") } ;
Output:
In this example, we are using all the methods of async from the Spatie\Async\ package. Those are catch, then, and timeout. We keep it simple for now without too much logic.
Code:
use Spatie\Async\Pool; $mypool = Pool::create(); $mypool ->asyncDemo(function () { print("async called here !!") print("async called here !!") }) ->then(function ($output) { print("print called here !!") }) ->catch(function ($exception) { print("catch called here !!") }) ->timeout(function () { print("timeout called here !!") }) ;
Output:
By using async in our code, we can enable parallel execution of tasks in our program. Also, they increase the performance of the code because the piece of code is independent of each other. But using StopIteration in situations where the data from the previous block of code is dependent on the current can lead to data loss and inconsistency.
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!