ReactPHP adalah perpustakaan tingkat rendah untuk pemrograman berbasis peristiwa di PHP. Intinya adalah loop peristiwa, yang di atasnya menyediakan utilitas tingkat rendah, seperti: Abstraksi aliran, pemecah DNS asinkron, klien/server jaringan, klien/server HTTP, dan interaksi dengan proses. Pustaka pihak ketiga dapat menggunakan komponen ini untuk membuat klien/server jaringan asinkron dan banyak lagi.
<?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 ;
Server web sederhana yang ditulis dalam ReactPHP merespons dengan "Halo Dunia!" untuk setiap permintaan.
ReactPHP siap produksi dan teruji dengan jutaan instalasi dari semua jenis proyek di seluruh dunia. Arsitekturnya yang berbasis peristiwa membuatnya sangat cocok untuk server jaringan dan klien yang efisien yang menangani ratusan atau ribuan koneksi bersamaan, aplikasi yang berjalan lama, dan banyak bentuk multitasking kooperatif lainnya dengan operasi I/O non-pemblokiran. Apa yang membuat ReactPHP istimewa adalah ekosistemnya yang hidup dengan ratusan perpustakaan pihak ketiga yang memungkinkan Anda berintegrasi dengan banyak sistem yang ada, seperti layanan jaringan umum, sistem basis data, dan API pihak ketiga lainnya.
ReactPHP tidak memblokir secara default. Gunakan pekerja untuk memblokir I/O. Perulangan peristiwa didasarkan pada pola reaktor (sesuai dengan namanya) dan sangat terinspirasi oleh perpustakaan seperti EventMachine (Ruby), Twisted (Python) dan Node.js (V8).
Repositori yang sedang Anda lihat ini sebagian besar digunakan sebagai repositori meta untuk mendiskusikan dan merencanakan segala hal tentang @ReactPHP. Lihat masing-masing komponen yang ditautkan di bawah untuk detail lebih lanjut tentang setiap komponen, dokumentasinya, dan kode sumbernya.
EventLoop ReactPHP loop peristiwa reaktor inti. Baca dokumentasinya
Streaming aliran yang dapat dibaca dan ditulis berdasarkan peristiwa untuk I/O non-pemblokiran di ReactPHP. Baca dokumentasinya
Janji Janji /Implementasi untuk PHP. Baca dokumentasinya
Utilitas dan fiber Async Async untuk ReactPHP. Baca dokumentasinya
Socket Async, streaming TCP/IP teks biasa dan server soket TLS aman serta koneksi klien untuk ReactPHP. Baca dokumentasinya
Soket klien dan server UDP berbasis peristiwa Datagram untuk ReactPHP. Baca dokumentasinya
HTTP Event-driven, implementasi klien HTTP streaming dan server untuk ReactPHP. Baca dokumentasinya
DNS Async Penyelesai DNS untuk ReactPHP. Baca dokumentasinya
Cache Caching Async untuk ReactPHP. Baca dokumentasinya
Perpustakaan ChildProcess untuk menjalankan proses anak. Baca dokumentasinya
Implementasi batas waktu PromiseTimer Trivial untuk lib Promise ReactPHP. Baca dokumentasinya
PromiseStream Tautan yang hilang antara Promise-land dan Stream-land, dibangun di atas ReactPHP. Baca dokumentasinya
Perpustakaan Klien dan Router PHP Thruway untuk Autobahn dan WAMP (Protokol Pesan Aplikasi Web) untuk Pesan Aplikasi Real-Time voryx/Thruway
PPM - Manajer Proses PHP PPM adalah manajer proses, supercharger, dan penyeimbang beban untuk aplikasi PHP modern. php-pm/php-pm
php-ar-drone Port node-ar-drone yang memungkinkan pengguna mengontrol Parrot AR Drone melalui PHP jolicode/php-ar-drone
Server WebSocket Asinkron Ratchet ratchetphp/Ratchet
Pustaka klien PHP Asinkron PredisAsync untuk Redis dibangun di atas ReactPHP nrk/predis-async
petunjuk/redis-server Implementasi server Redis dalam PHP murni petunjuk/redis-server
Dan masih banyak lagi di halaman wiki kami »
Sergey Zhuk Serangkaian artikel yang membahas ReactPHP: dari dasar hingga contoh aplikasi nyata. sergeyzhuk.me
Seri Blog Cees-Jan Kiewiet tentang beberapa komponen ReactPHP dan cara kerjanya. blog.wyrihaximus.net
Loïc Faugeron Symfony Kecepatan Super - ReactPHP. gnugat.github.io
Marc J. Schmidt Menghadirkan Performa Tinggi pada Aplikasi PHP Anda (dengan ReactPHP). marcjschmidt.de
Marc Morera Saat ReactPHP bertemu Symfony medium.com/@apisearch
Christian Lück Mendorong batas dengan ReactPHP
Jeremy Mikola Async PHP Dengan Bereaksi
Igor Wiedler PHP yang digerakkan oleh peristiwa
ReactPHP terdiri dari sekumpulan komponen individual. Ini berarti bahwa alih-alih menginstal sesuatu seperti "kerangka ReactPHP", Anda sebenarnya hanya memilih komponen yang Anda perlukan.
Proyek ini mengikuti SemVer untuk semua komponen stabilnya. Cara yang disarankan untuk menginstal komponen ini adalah melalui Composer. Baru mengenal Komposer?
Misalnya, ini mungkin terlihat seperti ini:
# recommended install: pick required components
composer require react/event-loop react/http
Sebagai alternatif, kami juga menyediakan paket meta yang akan menginstal semua komponen stabil sekaligus. Menginstal ini hanya disarankan untuk pembuatan prototipe cepat, karena daftar komponen stabil dapat berubah seiring waktu. Paket meta ini dapat diinstal seperti ini:
# quick protoyping only: install all stable components
composer require react/react:^1.4
Untuk lebih jelasnya, lihat beranda ReactPHP untuk contoh quickstart dan detail penggunaan.
Lihat juga log perubahan gabungan untuk semua komponen ReactPHP untuk detail tentang peningkatan versi.
Apakah Anda mempunyai pertanyaan dan butuh bantuan dengan ReactPHP? Jangan khawatir, kami siap membantu!
Sebagai langkah pertama, periksa dokumentasi rumit yang disertakan dengan setiap komponen (lihat link ke dokumentasi individual untuk setiap komponen di atas). Jika Anda menemukan pertanyaan Anda tidak terjawab dalam dokumentasi, ada kemungkinan besar pertanyaan tersebut relevan bagi lebih banyak orang. Jangan ragu untuk mengajukan pertanyaan Anda sebagai isu di komponen terkait sehingga orang lain juga dapat berpartisipasi.
Anda juga dapat memeriksa ruang obrolan resmi Gitter kami. Sebagian besar orang yang terlibat dalam proyek ini tersedia di ruang obrolan ini, sehingga banyak pertanyaan dapat dijawab dalam beberapa menit hingga beberapa jam. Kami juga menggunakan ruang obrolan ini untuk mengumumkan semua rilis baru dan upaya pengembangan yang sedang berlangsung, jadi pertimbangkan untuk tetap berada di ruang obrolan ini lebih lama.
Ikuti juga @reactphp di Twitter untuk pembaruan. Kami menggunakan ini sebagian besar untuk pembaruan penting dan lebih besar serta untuk terus memberi informasi terbaru kepada komunitas tentang upaya pembangunan yang sedang berlangsung. Anda selalu dapat menggunakan hashtag #reactphp
jika Anda memiliki sesuatu untuk dibagikan!
Kami adalah proyek yang sangat terbuka dan kami lebih memilih komunikasi publik jika memungkinkan, sehingga lebih banyak orang dapat berpartisipasi dan membantu mendapatkan solusi terbaik. Pada saat yang sama, kami menyadari bahwa ada beberapa hal yang lebih baik ditangani secara pribadi. Baik Anda hanya ingin mengucapkan terima kasih , ingin melaporkan masalah keamanan, atau ingin membantu mensponsori pengembangan fitur tertentu, Anda dapat menghubungi tim inti secara pribadi dengan mengirimkan email ke [email protected]
. Harap diingat bahwa kami adalah tim kecil yang terdiri dari sukarelawan dan melakukan yang terbaik untuk mendukung siapa pun yang ingin membantu.
Apakah Anda ingin mendukung ReactPHP? Luar biasa! Mari kita mulai dengan memberi tahu dunia mengapa menurut Anda ReactPHP itu hebat dan mencoba membantu orang lain untuk ikut serta! Kirim tweet, tulis postingan blog, berikan ceramah di grup pengguna atau konferensi lokal Anda, atau bahkan tulis buku. Ada banyak cara yang bisa Anda bantu. Anda selalu dapat menghubungi kami secara pribadi dan membantu orang lain di saluran dukungan kami. Terima kasih!
Untuk menjalankan test suite, Anda harus mengkloning repo ini terlebih dahulu, lalu menginstal semua dependensi melalui Composer:
composer install
Untuk menjalankan rangkaian pengujian, buka root proyek dan jalankan:
vendor/bin/phpunit
Rangkaian pengujian juga berisi sejumlah pengujian integrasi fungsional yang mengandalkan koneksi internet yang stabil. Karena banyaknya pengujian integrasi, pengujian ini dilewati secara default selama CI berjalan. Jika Anda juga tidak ingin menjalankannya, lewati saja seperti ini:
vendor/bin/phpunit --exclude-group internet
MIT, lihat LISENSI.