Lors de l'envoi d'e-mails par lots, vous devez obtenir les résultats de l'envoi, vous devez donc attendre les résultats de la demande.
Existe-t-il un moyen pour PHP de demander l'interface de manière asynchrone, puis d'obtenir les données, puis d'exécuter la fonction de rappel ?
Maintenant, c'est une interface de requête synchrone, et puis attendez, c'est très lent. . Et le processeur du serveur augmentera pendant l'exécution. .
Demandez à Dieu l'illumination
Le point clé maintenant est que nous ne voulons pas attendre le retour de la requête, car elle est très lente, et appeler directement un certain morceau de code lorsqu'il y a un retour. . La file d'attente Redis est déjà utilisée et le script est en cours d'exécution
Extension multithread d'installation php. Vous pouvez y parvenir en l'étendant vous-même, et js est également implémenté dans un seul thread.
Vous pouvez essayer d'utiliser
reactphp
,workerman
,swoole
ces bibliothèques pour effectuer des tâches asynchronesCela peut être réalisé avec le curl_multi fourni avec php
Il est fortement recommandé d'utiliser Workererman. Si vous utilisez fsockopen, ceci n'est envoyé que de manière asynchrone, mais il n'est pas renvoyé ! Si vous souhaitez un traitement asynchrone, utilisez Workererman. Bien sûr, swoole peut également être utilisé, mais cela a C. langage, certains messages d'erreur proviennent de C. Si vous connaissez C, vous pouvez également l'utiliser. Démarrer avec Workman est extrêmement simple. La logique d'implémentation spécifique est la suivante :
Lorsque vous avez besoin d'être asynchrone, vous appelez directement Workerman pour exécuter votre logique. Ce Workerman est exécuté de manière synchrone. Une fois que
Workerman a exécuté la logique, il appelle la tâche de manière asynchrone. asynchrone de l'ouvrier. l'ouvrier revient directement.
Une fois votre tâche terminée, elle sera transmise au travailleur et celui-ci exécutera votre logique asynchrone.
Vous offre un cadre de sauvegarde avec une communication asynchrone PHP
github-php-awesome traduit
file d'attente
1. Stockez les informations à envoyer dans Redis ou autre cache mémoire.
2.php fournit une interface qui doit accéder au jeton de clé. Cette interface permet de lire les données de courrier électronique dans le redis mis en cache en boucle et de les envoyer.
3. Il est prévu d'utiliser des tâches planifiées sous Windows et Linux. Accédez régulièrement à http pour demander cette interface php et terminer l'envoi. C’est équivalent à asynchrone.