ReactPHP ist eine Low-Level-Bibliothek für ereignisgesteuerte Programmierung in PHP. Im Kern handelt es sich um eine Ereignisschleife, die darüber hinaus Low-Level-Dienstprogramme bereitstellt, wie zum Beispiel: Streams-Abstraktion, asynchroner DNS-Resolver, Netzwerk-Client/Server, HTTP-Client/Server und Interaktion mit Prozessen. Bibliotheken von Drittanbietern können diese Komponenten verwenden, um asynchrone Netzwerk-Clients/Server und mehr zu erstellen.
<?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 ;
Dieser einfache, in ReactPHP geschriebene Webserver antwortet mit „Hello World!“ für jede Anfrage.
ReactPHP ist produktionsbereit und praxiserprobt mit Millionen von Installationen aus allen Arten von Projekten auf der ganzen Welt. Aufgrund seiner ereignisgesteuerten Architektur eignet es sich perfekt für effiziente Netzwerkserver und -clients, die Hunderte oder Tausende gleichzeitiger Verbindungen, Anwendungen mit langer Laufzeit und viele andere Formen kooperativen Multitaskings mit nicht blockierenden E/A-Vorgängen verarbeiten. Das Besondere an ReactPHP ist sein lebendiges Ökosystem mit Hunderten von Bibliotheken von Drittanbietern, die Ihnen die Integration in viele bestehende Systeme ermöglichen, wie zum Beispiel gängige Netzwerkdienste, Datenbanksysteme und andere APIs von Drittanbietern.
ReactPHP ist standardmäßig nicht blockierend. Verwenden Sie Worker zum Blockieren von E/A. Die Ereignisschleife basiert auf dem Reaktormuster (daher der Name) und ist stark von Bibliotheken wie EventMachine (Ruby), Twisted (Python) und Node.js (V8) inspiriert.
Dieses Repository, das Sie sich gerade ansehen, wird hauptsächlich als Meta-Repository verwendet, um alles rund um @ReactPHP zu besprechen und zu planen. Weitere Einzelheiten zu jeder Komponente, ihrer Dokumentation und ihrem Quellcode finden Sie in den unten verlinkten einzelnen Komponenten.
EventLoop ReactPHPs Kernreaktor-Ereignisschleife. Lesen Sie die Dokumentation
Streamen Sie ereignisgesteuerte lesbare und beschreibbare Streams für nicht blockierende E/A in ReactPHP. Lesen Sie die Dokumentation
Promise Promises/Eine Implementierung für PHP. Lesen Sie die Dokumentation
Async Async-Dienstprogramme und Fibers für ReactPHP. Lesen Sie die Dokumentation
Socket Async, Streaming von Klartext-TCP/IP und sichere TLS-Socket-Server- und Client-Verbindungen für ReactPHP. Lesen Sie die Dokumentation
Datagram -ereignisgesteuerte UDP-Client- und Server-Sockets für ReactPHP. Lesen Sie die Dokumentation
HTTP -ereignisgesteuerte Streaming-HTTP-Client- und Server-Implementierung für ReactPHP. Lesen Sie die Dokumentation
DNS Async DNS-Resolver für ReactPHP. Lesen Sie die Dokumentation
Cache Async-Caching für ReactPHP. Lesen Sie die Dokumentation
ChildProcess- Bibliothek zum Ausführen von untergeordneten Prozessen. Lesen Sie die Dokumentation
PromiseTimer Triviale Timeout-Implementierung für die Promise-Bibliothek von ReactPHP. Lesen Sie die Dokumentation
PromiseStream Das fehlende Bindeglied zwischen Promise-Land und Stream-Land, aufgebaut auf ReactPHP. Lesen Sie die Dokumentation
Thruway PHP-Client- und Router-Bibliothek für Autobahn und WAMP (Web Application Messaging Protocol) für Echtzeit-Anwendungsnachrichten voryx/Thruway
PPM – PHP Process Manager PPM ist ein Prozessmanager, Supercharger und Load Balancer für moderne PHP-Anwendungen. php-pm/php-pm
php-ar-drone Port von node-ar-drone, der es dem Benutzer ermöglicht, eine Parrot AR Drone über PHP Jolicode/php-ar-drone zu steuern
Ratchet Asynchroner WebSocket-Server ratchetphp/Ratchet
PredisAsync Asynchrone PHP-Client-Bibliothek für Redis, die auf ReactPHP nrk/predis-async basiert
Clue/Redis-Server Eine Redis-Server-Implementierung in reinem PHP Clue/Redis-Server
Und vieles mehr auf unserer Wiki-Seite »
Sergey Zhuk Eine Artikelserie über ReactPHP: von den Grundlagen bis zu echten Anwendungsbeispielen. sergeyzhuk.me
Cees-Jan Kiewiet Blogserie über verschiedene ReactPHP-Komponenten und deren Funktionsweise. blog.wyrihaximus.net
Loïc Faugeron Super Speed Symfony - ReactPHP. gnugat.github.io
Marc J. Schmidt Bringen Sie hohe Leistung in Ihre PHP-App (mit ReactPHP). marcjschmidt.de
Marc Morera Wenn ReactPHP Symfony trifft medium.com/@apisearch
Christian Lück Mit ReactPHP an die Grenzen gehen
Jeremy Mikola Async PHP mit React
Igor Wiedler Ereignisgesteuertes PHP
ReactPHP besteht aus einer Reihe einzelner Komponenten. Das bedeutet, dass Sie nicht so etwas wie ein „ReactPHP-Framework“ installieren, sondern nur die Komponenten auswählen, die Sie benötigen.
Dieses Projekt folgt SemVer für alle seine stabilen Komponenten. Die empfohlene Methode zur Installation dieser Komponenten ist Composer. Neu bei Composer?
Das könnte zum Beispiel so aussehen:
# recommended install: pick required components
composer require react/event-loop react/http
Alternativ stellen wir auch ein Metapaket zur Verfügung, das alle stabilen Komponenten auf einmal installiert. Die Installation wird nur für schnelles Prototyping empfohlen, da sich die Liste der stabilen Komponenten im Laufe der Zeit ändern kann. Dieses Metapaket kann wie folgt installiert werden:
# quick protoyping only: install all stable components
composer require react/react:^1.4
Weitere Einzelheiten finden Sie auf der Homepage von ReactPHP mit Schnellstartbeispielen und Nutzungsdetails.
Einzelheiten zu Versionsaktualisierungen finden Sie auch im kombinierten Änderungsprotokoll für alle ReactPHP-Komponenten.
Sie haben eine Frage und benötigen Hilfe zu ReactPHP? Machen Sie sich keine Sorgen, wir sind für Sie da!
Sehen Sie sich als ersten Schritt die ausführliche Dokumentation an, die mit jeder Komponente geliefert wird (siehe Links zu einzelnen Dokumentationen für jede Komponente oben). Wenn Sie feststellen, dass Ihre Frage in der Dokumentation nicht beantwortet wird, besteht eine gute Chance, dass sie für mehr Menschen relevant ist. Bitte zögern Sie nicht, Ihre Frage als Problem in der entsprechenden Komponente einzureichen, damit auch andere teilnehmen können.
Sie können auch unseren offiziellen Gitter-Chatroom besuchen. Die meisten an diesem Projekt beteiligten Personen sind in diesem Chatroom verfügbar, sodass viele Fragen innerhalb weniger Minuten bis zu einigen Stunden beantwortet werden. Wir nutzen diesen Chatroom auch, um alle Neuerscheinungen und laufenden Entwicklungsbemühungen anzukündigen. Bleiben Sie also lieber etwas länger in diesem Chatroom.
Folgen Sie auch @reactphp auf Twitter für Updates. Wir verwenden dies hauptsächlich für bemerkenswerte, größere Updates und um die Community über laufende Entwicklungsbemühungen auf dem Laufenden zu halten. Sie können jederzeit den Hashtag #reactphp
verwenden, wenn Sie etwas mitteilen möchten!
Wir sind ein sehr offenes Projekt und bevorzugen nach Möglichkeit öffentliche Kommunikation, damit mehr Menschen teilnehmen und dabei helfen können, die besten verfügbaren Lösungen zu finden. Gleichzeitig ist uns klar, dass man manche Dinge besser privat ansprechen kann. Egal, ob Sie sich einfach nur bedanken , ein Sicherheitsproblem melden oder die Entwicklung einer bestimmten Funktion unterstützen möchten, Sie können sich privat an das Kernteam wenden, indem Sie eine E-Mail an [email protected]
senden. Bitte bedenken Sie, dass wir ein kleines Team von Freiwilligen sind und unser Bestes tun, um jeden zu unterstützen, der sich meldet.
Möchten Sie ReactPHP unterstützen? Eindrucksvoll! Lassen Sie uns zunächst der Welt mitteilen, warum Sie ReactPHP großartig finden, und versuchen Sie, anderen dabei zu helfen, mitzumachen! Senden Sie einen Tweet, schreiben Sie einen Blogbeitrag, halten Sie einen Vortrag bei Ihrer lokalen Benutzergruppe oder Konferenz oder schreiben Sie sogar ein Buch. Es gibt viele Möglichkeiten, wie Sie helfen können. Sie können sich jederzeit privat an uns wenden und anderen über unsere Supportkanäle helfen. Danke schön!
Um die Testsuite auszuführen, müssen Sie zunächst dieses Repo klonen und dann alle Abhängigkeiten über Composer installieren:
composer install
Um die Testsuite auszuführen, gehen Sie zum Projektstammverzeichnis und führen Sie Folgendes aus:
vendor/bin/phpunit
Die Testsuite enthält außerdem eine Reihe funktionaler Integrationstests, die eine stabile Internetverbindung voraussetzen. Aufgrund der Vielzahl an Integrationstests werden diese bei CI-Läufen standardmäßig übersprungen. Wenn Sie diese ebenfalls nicht ausführen möchten, können Sie sie einfach wie folgt überspringen:
vendor/bin/phpunit --exclude-group internet
MIT, siehe LIZENZ.