ReactPHP est une bibliothèque de bas niveau pour la programmation événementielle en PHP. À la base se trouve une boucle d'événements, au-dessus de laquelle il fournit des utilitaires de bas niveau, tels que : l'abstraction de flux, le résolveur DNS asynchrone, le client/serveur réseau, le client/serveur HTTP et l'interaction avec les processus. Les bibliothèques tierces peuvent utiliser ces composants pour créer des clients/serveurs réseau asynchrones et bien plus encore.
<?php
// $ composer require react/http react/socket # install example using Composer
// $ php example.php # run example on command line, requires no additional web server
require __DIR__ . ' /vendor/autoload.php ' ;
$ server = new React Http HttpServer ( function ( Psr Http Message ServerRequestInterface $ request ) {
return React Http Message Response:: plaintext (
" Hello World! n"
);
});
$ socket = new React Socket SocketServer ( ' 127.0.0.1:8080 ' );
$ server -> listen ( $ socket );
echo " Server running at http://127.0.0.1:8080 " . PHP_EOL ;
Ce simple serveur Web écrit en ReactPHP répond par « Hello World ! » pour chaque demande.
ReactPHP est prêt pour la production et testé avec des millions d'installations provenant de toutes sortes de projets à travers le monde. Son architecture basée sur les événements en fait la solution idéale pour les serveurs et clients réseau efficaces gérant des centaines ou des milliers de connexions simultanées, des applications à exécution longue et de nombreuses autres formes de multitâche coopératif avec des opérations d'E/S non bloquantes. Ce qui rend ReactPHP spécial, c'est son écosystème dynamique avec des centaines de bibliothèques tierces vous permettant d'intégrer de nombreux systèmes existants, tels que des services réseau communs, des systèmes de bases de données et d'autres API tierces.
ReactPHP est non bloquant par défaut. Utilisez des travailleurs pour bloquer les E/S. La boucle d'événements est basée sur le modèle de réacteur (d'où le nom) et fortement inspirée de bibliothèques telles que EventMachine (Ruby), Twisted (Python) et Node.js (V8).
Ce référentiel que vous consultez actuellement est principalement utilisé comme méta-dépôt pour discuter et planifier tout ce qui concerne @ReactPHP. Consultez les composants individuels liés ci-dessous pour plus de détails sur chaque composant, sa documentation et son code source.
EventLoop La boucle d'événements du réacteur central de ReactPHP. Lire la documentation
Stream Flux lisibles et inscriptibles basés sur les événements pour les E/S non bloquantes dans ReactPHP. Lire la documentation
Promesse Promesses/Une implémentation pour PHP. Lire la documentation
Async Utilitaires et fibres Async pour ReactPHP. Lire la documentation
Socket Async, streaming TCP/IP en clair et connexions sécurisées au serveur de socket TLS et aux clients pour ReactPHP. Lire la documentation
Datagram Sockets client et serveur UDP pilotés par événements pour ReactPHP. Lire la documentation
HTTP Implémentation d'un client et d'un serveur HTTP en streaming piloté par les événements pour ReactPHP. Lire la documentation
Résolveur DNS DNS asynchrone pour ReactPHP. Lire la documentation
Mise en cache asynchrone pour ReactPHP. Lire la documentation
Bibliothèque ChildProcess pour exécuter des processus enfants. Lire la documentation
PromiseTimer Implémentation de délai d'attente trivial pour la bibliothèque Promise de ReactPHP. Lire la documentation
PromiseStream Le chaînon manquant entre Promise-land et Stream-land, construit sur ReactPHP. Lire la documentation
Bibliothèque de client et de routeur PHP Thruway pour autoroute et WAMP (Web Application Messaging Protocol) pour la messagerie d'application en temps réel voryx/Thruway
PPM - PHP Process Manager PPM est un gestionnaire de processus, un compresseur et un équilibreur de charge pour les applications PHP modernes. php-pm/php-pm
php-ar-drone Port de node-ar-drone qui permet à l'utilisateur de contrôler un Parrot AR Drone via PHP jolicode/php-ar-drone
Ratchet Serveur WebSocket asynchrone ratchetphp/Ratchet
Bibliothèque client PHP asynchrone PredisAsync pour Redis construite sur ReactPHP nrk/predis-async
Clue/redis-server Une implémentation de serveur Redis en PHP pur Clue/redis-server
Et bien d'autres sur notre page wiki »
Sergey Zhuk Une série d'articles couvrant ReactPHP : des bases aux exemples d'application réels. sergeyzhuk.me
Série de blogs Cees-Jan Kiewiet sur plusieurs composants ReactPHP et leur fonctionnement. blog.wyrihaximus.net
Loïc Faugeron Super Speed Symfony - ReactPHP. gnugat.github.io
Marc J. Schmidt apporte de hautes performances à votre application PHP (avec ReactPHP). marcjschmidt.de
Marc Morera Quand ReactPHP rencontre Symfony medium.com/@apisearch
Christian Lück Repousser les limites avec ReactPHP
Jeremy Mikola PHP asynchrone avec React
Igor Wiedler PHP événementiel
ReactPHP se compose d'un ensemble de composants individuels. Cela signifie qu'au lieu d'installer quelque chose comme un "framework ReactPHP", vous choisissez uniquement les composants dont vous avez besoin.
Ce projet suit SemVer pour tous ses composants stables. La méthode recommandée pour installer ces composants consiste à utiliser Composer. Nouveau sur Composer ?
Par exemple, cela peut ressembler à ceci :
# recommended install: pick required components
composer require react/event-loop react/http
Comme alternative, nous fournissons également un méta-paquet qui installera tous les composants stables en même temps. Son installation n'est recommandée que pour un prototypage rapide, car la liste des composants stables peut changer au fil du temps. Ce méta-paquet peut être installé comme ceci :
# quick protoyping only: install all stable components
composer require react/react:^1.4
Pour plus de détails, consultez la page d'accueil de ReactPHP pour des exemples de démarrage rapide et des détails d'utilisation.
Consultez également le journal des modifications combiné pour tous les composants ReactPHP pour plus de détails sur les mises à niveau de version.
Avez-vous une question et avez-vous besoin d'aide avec ReactPHP ? Ne vous inquiétez pas, nous sommes là pour vous aider !
Dans un premier temps, consultez la documentation élaborée fournie avec chaque composant (voir les liens vers la documentation individuelle pour chaque composant ci-dessus). Si vous constatez que votre question ne trouve pas de réponse dans la documentation, il y a de fortes chances qu'elle concerne davantage de personnes. N'hésitez pas à déposer votre question en tant que problème dans la composante appropriée afin que d'autres puissent également participer.
Vous pouvez également consulter notre salle de discussion officielle Gitter. La plupart des personnes impliquées dans ce projet sont disponibles dans ce salon de discussion, ce qui permet de répondre à de nombreuses questions en quelques minutes à quelques heures. Nous utilisons également ce salon de discussion pour annoncer toutes les nouvelles versions et les efforts de développement en cours, alors pensez à rester dans ce salon de discussion un peu plus longtemps.
Suivez également @reactphp sur Twitter pour les mises à jour. Nous l'utilisons principalement pour des mises à jour importantes et importantes et pour tenir la communauté informée des efforts de développement en cours. Vous pouvez toujours utiliser le hashtag #reactphp
si vous avez quelque chose à partager !
Nous sommes un projet très ouvert et nous préférons la communication publique autant que possible, afin que davantage de personnes puissent participer et aider à trouver les meilleures solutions disponibles. En même temps, on se rend compte que certaines choses sont mieux abordées en privé. Que vous souhaitiez simplement dire merci , signaler un problème de sécurité ou aider à sponsoriser le développement d'une certaine fonctionnalité, vous pouvez contacter l'équipe principale en privé en envoyant un e-mail à [email protected]
. N'oubliez pas que nous sommes une petite équipe de bénévoles et que nous faisons de notre mieux pour soutenir quiconque nous contacte.
Voulez-vous prendre en charge ReactPHP ? Génial! Commençons par faire savoir au monde entier pourquoi vous pensez que ReactPHP est génial et essayons d'aider les autres à nous rejoindre ! Envoyez un tweet, rédigez un article de blog, donnez une conférence lors de votre groupe d'utilisateurs local ou d'une conférence ou même écrivez un livre. Il existe de nombreuses façons d’aider. Vous pouvez toujours nous contacter en privé et aider les autres via nos canaux d'assistance. Merci!
Pour exécuter la suite de tests, vous devez d'abord cloner ce dépôt, puis installer toutes les dépendances via Composer :
composer install
Pour exécuter la suite de tests, accédez à la racine du projet et exécutez :
vendor/bin/phpunit
La suite de tests contient également un certain nombre de tests d'intégration fonctionnelle qui reposent sur une connexion Internet stable. En raison du grand nombre de tests d'intégration, ceux-ci sont ignorés par défaut lors de l'exécution du CI. Si vous ne souhaitez pas non plus les exécuter, vous pouvez simplement les ignorer comme ceci :
vendor/bin/phpunit --exclude-group internet
MIT, voir LICENCE.