ReactPHP es una biblioteca de bajo nivel para programación basada en eventos en PHP. En esencia, hay un bucle de eventos, además del cual proporciona utilidades de bajo nivel, como: abstracción de flujos, resolución de DNS asíncrona, cliente/servidor de red, cliente/servidor HTTP e interacción con procesos. Las bibliotecas de terceros pueden utilizar estos componentes para crear clientes/servidores de red asíncronos y más.
<?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 ;
Este sencillo servidor web escrito en ReactPHP responde con "¡Hola mundo!" para cada solicitud.
ReactPHP está listo para producción y probado en batalla con millones de instalaciones de todo tipo de proyectos en todo el mundo. Su arquitectura basada en eventos lo convierte en la opción perfecta para servidores y clientes de red eficientes que manejan cientos o miles de conexiones simultáneas, aplicaciones de larga ejecución y muchas otras formas de multitarea cooperativa con operaciones de E/S sin bloqueo. Lo que hace especial a ReactPHP es su vívido ecosistema con cientos de bibliotecas de terceros que le permiten integrarse con muchos sistemas existentes, como servicios de red comunes, sistemas de bases de datos y otras API de terceros.
ReactPHP no bloquea de forma predeterminada. Utilice trabajadores para bloquear E/S. El bucle de eventos se basa en el patrón reactor (de ahí el nombre) y está fuertemente inspirado en bibliotecas como EventMachine (Ruby), Twisted (Python) y Node.js (V8).
Este repositorio que estás viendo actualmente se utiliza principalmente como metarrepositorio para discutir y planificar todo lo relacionado con @ReactPHP. Consulte los componentes individuales vinculados a continuación para obtener más detalles sobre cada componente, su documentación y código fuente.
EventLoop Bucle de eventos del reactor central de ReactPHP. Leer la documentación
Transmitir secuencias legibles y grabables impulsadas por eventos para E/S sin bloqueo en ReactPHP. Leer la documentación
Promise Promises/Una implementación para PHP. Leer la documentación
Async Utilidades y fibras Async para ReactPHP. Leer la documentación
Socket Async, transmisión de texto sin formato TCP/IP y conexiones seguras de cliente y servidor de socket TLS para ReactPHP. Leer la documentación
Datagramas Sockets de servidor y cliente UDP controlados por eventos para ReactPHP. Leer la documentación
HTTP Implementación de servidor y cliente HTTP de transmisión basada en eventos para ReactPHP. Leer la documentación
Resolvedor DNS asíncrono de DNS para ReactPHP. Leer la documentación
Caché Almacenamiento en caché asíncrono para ReactPHP. Leer la documentación
Biblioteca ChildProcess para ejecutar procesos secundarios. Leer la documentación
PromiseTimer Implementación trivial de tiempo de espera para la biblioteca Promise de ReactPHP. Leer la documentación
PromiseStream El eslabón perdido entre Promise-land y Stream-land, construido sobre ReactPHP. Leer la documentación
Biblioteca de enrutador y cliente PHP Thruway para Autobahn y WAMP (Protocolo de mensajería de aplicaciones web) para mensajería de aplicaciones en tiempo real voryx/Thruway
PPM - PHP Process Manager PPM es un administrador de procesos, potenciador y equilibrador de carga para aplicaciones PHP modernas. php-pm/php-pm
php-ar-drone Puerto de node-ar-drone que permite al usuario controlar un Parrot AR Drone a través de PHP jolicode/php-ar-drone
Ratchet Servidor WebSocket asíncrono ratchetphp/Ratchet
PredisAsync Biblioteca cliente PHP asincrónica para Redis construida sobre ReactPHP nrk/predis-async
pista/redis-server Una implementación del servidor Redis en PHP puro pista/redis-server
Y muchos más en nuestra página wiki »
Sergey Zhuk Una serie de artículos que cubren ReactPHP: desde lo básico hasta los ejemplos de aplicaciones reales. sergeyzhuk.me
Serie de blogs de Cees-Jan Kiewiet sobre varios componentes de ReactPHP y cómo funcionan. blog.wyrihaximus.net
Loïc Faugeron Super Speed Symfony - ReactPHP. gnugat.github.io
Marc J. Schmidt incorpore alto rendimiento a su aplicación PHP (con ReactPHP). marcjschmidt.de
Marc Morera Cuando ReactPHP se encuentra con Symfony medium.com/@apisearch
Christian Lück superando los límites con ReactPHP
Jeremy Mikola PHP asíncrono con React
Igor Wiedler PHP basado en eventos
ReactPHP consta de un conjunto de componentes individuales. Esto significa que en lugar de instalar algo como un "marco ReactPHP", en realidad eliges sólo los componentes que necesitas.
Este proyecto sigue a SemVer para todos sus componentes estables. La forma recomendada de instalar estos componentes es a través de Composer. ¿Nuevo en el compositor?
Por ejemplo, esto puede verse así:
# recommended install: pick required components
composer require react/event-loop react/http
Como alternativa, también proporcionamos un metapaquete que instalará todos los componentes estables a la vez. Instalar esto solo se recomienda para la creación rápida de prototipos, ya que la lista de componentes estables puede cambiar con el tiempo. Este metapaquete se puede instalar así:
# quick protoyping only: install all stable components
composer require react/react:^1.4
Para obtener más detalles, consulte la página de inicio de ReactPHP para ver ejemplos de inicio rápido y detalles de uso.
Consulte también el registro de cambios combinado para todos los componentes de ReactPHP para obtener detalles sobre las actualizaciones de versiones.
¿Tiene alguna pregunta y necesita ayuda con ReactPHP? ¡No te preocupes, estamos aquí para ayudarte!
Como primer paso, consulte la documentación detallada que viene con cada componente (consulte los enlaces a la documentación individual de cada componente más arriba). Si descubre que su pregunta no encuentra respuesta en la documentación, es muy probable que sea relevante para más personas. No dude en presentar su pregunta como un problema en el componente correspondiente para que otros también puedan participar.
También puede consultar nuestra sala de chat oficial de Gitter. La mayoría de las personas involucradas en este proyecto están disponibles en esta sala de chat, por lo que muchas preguntas se responden en unos minutos o algunas horas. También utilizamos esta sala de chat para anunciar todos los nuevos lanzamientos y los esfuerzos de desarrollo en curso, así que considere permanecer en esta sala de chat un poco más.
Siga también a @reactphp en Twitter para obtener actualizaciones. Usamos esto principalmente para actualizaciones importantes y más importantes y para mantener a la comunidad actualizada sobre los esfuerzos de desarrollo en curso. ¡Siempre puedes usar el hashtag #reactphp
si tienes algo que compartir!
Somos un proyecto muy abierto y preferimos la comunicación pública siempre que sea posible, para que más personas puedan participar y ayudar a obtener las mejores soluciones disponibles. Al mismo tiempo, nos damos cuenta de que algunas cosas es mejor abordarlas en privado. Ya sea que solo quiera dar las gracias , informar un problema de seguridad o ayudar a patrocinar el desarrollo de una determinada función, puede comunicarse con el equipo central en privado enviando un correo electrónico a [email protected]
. Tenga en cuenta que somos un pequeño equipo de voluntarios y hacemos todo lo posible para ayudar a cualquiera que se acerque.
¿Quieres apoyar ReactPHP? ¡Impresionante! ¡Comencemos por hacerle saber al mundo por qué crees que ReactPHP es increíble y tratemos de ayudar a otros a unirse! Envíe un tweet, escriba una publicación en un blog, dé una charla en su grupo de usuarios o conferencia local o incluso escriba un libro. Hay muchas maneras en que puedes ayudar. Siempre puedes comunicarte con nosotros en privado y ayudar a otros en nuestros canales de soporte. ¡Gracias!
Para ejecutar el conjunto de pruebas, primero debe clonar este repositorio y luego instalar todas las dependencias a través de Composer:
composer install
Para ejecutar el conjunto de pruebas, vaya a la raíz del proyecto y ejecute:
vendor/bin/phpunit
El conjunto de pruebas también contiene una serie de pruebas de integración funcional que dependen de una conexión a Internet estable. Debido a la gran cantidad de pruebas de integración, estas se omiten de forma predeterminada durante las ejecuciones de CI. Si tampoco desea ejecutarlos, simplemente puede omitirlos de esta manera:
vendor/bin/phpunit --exclude-group internet
MIT, ver LICENCIA.