PHP asynchrone

WBOY
WBOYoriginal
2024-08-29 12:51:451156parcourir

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és

Commencez 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 ».

Comment fonctionne la fonction asynchrone en PHP ?

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.

  • Afin de créer le bloc asynchrone, nous devons d'abord importer ou utiliser le package 'spatie'. Nous pouvons importer cela dans notre code comme ci-dessous ; Nous allons installer ce package en utilisant le composer. Vous pouvez également trouver la commande composer sous la syntaxe.

Exemple :

use Spatie\Async

cmd :

composer require spatie
  • La deuxième étape est que nous allons créer un objet pool. En utilisant cet objet, nous pouvons écrire la fonction asynchrone. Voir la syntaxe ci-dessous pour une meilleure compréhension ;

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;
  • Dans cette étape, nous pouvons maintenant créer notre fonction asynchrone en utilisant l'objet pool. Nous pouvons donner n'importe quel nom à la fonction et écrire notre logique. Pour une meilleure compréhension, voir ci-dessous la syntaxe ;

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 ;

1. délai d'attente

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.
})

2. alors

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
})

3. attraper

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.
})

Examples of PHP async

Following are the examples given below:

Example #1

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:

PHP asynchrone

Example #2

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:

PHP asynchrone

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:PHP strlen()Article suivant:PHP strlen()