ReactPHP เป็นไลบรารีระดับต่ำสำหรับการเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์ใน PHP หัวใจหลักของมันคือลูปเหตุการณ์ นอกเหนือจากนั้นยังมียูทิลิตี้ระดับต่ำ เช่น: Streams abstraction, ตัวแก้ไข DNS แบบอะซิงก์, ไคลเอ็นต์/เซิร์ฟเวอร์เครือข่าย, ไคลเอนต์/เซิร์ฟเวอร์ HTTP และการโต้ตอบกับกระบวนการ ไลบรารีบุคคลที่สามสามารถใช้ส่วนประกอบเหล่านี้เพื่อสร้างไคลเอนต์/เซิร์ฟเวอร์เครือข่ายอะซิงก์และอื่นๆ อีกมากมาย
<?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 ;
เว็บเซิร์ฟเวอร์ธรรมดานี้เขียนด้วย ReactPHP ตอบกลับด้วย "Hello World!" สำหรับทุกคำขอ
ReactPHP พร้อมในการผลิตและผ่านการทดสอบการต่อสู้ด้วยการติดตั้งนับล้านจากโครงการทุกประเภททั่วโลก สถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์ทำให้เหมาะอย่างยิ่งสำหรับเซิร์ฟเวอร์เครือข่ายที่มีประสิทธิภาพและไคลเอนต์ที่จัดการการเชื่อมต่อพร้อมกันนับร้อยหรือนับพัน แอปพลิเคชันที่ทำงานระยะยาว และรูปแบบอื่นๆ มากมายของการทำงานร่วมกันแบบมัลติทาสกิ้งด้วยการดำเนินการ I/O ที่ไม่ปิดกั้น สิ่งที่ทำให้ ReactPHP พิเศษคือระบบนิเวศที่มีชีวิตชีวาซึ่งมีไลบรารีบุคคลที่สามหลายร้อยแห่งที่ช่วยให้คุณสามารถผสานรวมกับระบบที่มีอยู่มากมาย เช่น บริการเครือข่ายทั่วไป ระบบฐานข้อมูล และ API ของบุคคลที่สามอื่นๆ
ReactPHP ไม่ได้ถูกบล็อกโดยค่าเริ่มต้น ใช้ผู้ปฏิบัติงานเพื่อบล็อก I/O เหตุการณ์วนซ้ำขึ้นอยู่กับรูปแบบเครื่องปฏิกรณ์ (จึงเป็นชื่อ) และได้รับแรงบันดาลใจอย่างมากจากไลบรารีเช่น EventMachine (Ruby), Twisted (Python) และ Node.js (V8)
พื้นที่เก็บข้อมูลที่คุณกำลังดูอยู่นี้ส่วนใหญ่จะใช้เป็นพื้นที่เก็บข้อมูลเมตาเพื่อพูดคุยและวางแผนทุกสิ่ง @ReactPHP ดูส่วนประกอบแต่ละรายการที่ลิงก์ด้านล่างสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับแต่ละส่วนประกอบ เอกสารประกอบ และซอร์สโค้ด
เหตุการณ์ลูปเครื่องปฏิกรณ์หลักของ EventLoop ReactPHP อ่านเอกสารประกอบ
สตรี ม สตรีมที่อ่านและเขียนได้ซึ่งขับเคลื่อนด้วยเหตุการณ์สำหรับ I/O ที่ไม่ปิดกั้นใน ReactPHP อ่านเอกสารประกอบ
สัญญา สัญญา/การดำเนินการสำหรับ PHP อ่านเอกสารประกอบ
Async ยูทิลิตี้ Async และไฟเบอร์สำหรับ ReactPHP อ่านเอกสารประกอบ
Socket Async การสตรีมข้อความธรรมดา TCP/IP และเซิร์ฟเวอร์ซ็อกเก็ต TLS ที่ปลอดภัยและการเชื่อมต่อไคลเอนต์สำหรับ ReactPHP อ่านเอกสารประกอบ
ไคลเอนต์ UDP ที่ขับเคลื่อนด้วยเหตุการณ์ ดาตาแกรม และซ็อกเก็ตเซิร์ฟเวอร์สำหรับ ReactPHP อ่านเอกสารประกอบ
การใช้งาน HTTP ที่ขับเคลื่อนด้วยเหตุการณ์ ไคลเอนต์ HTTP และเซิร์ฟเวอร์สำหรับ ReactPHP อ่านเอกสารประกอบ
ตัวแก้ไข DNS Async DNS สำหรับ ReactPHP อ่านเอกสารประกอบ
แคช Async แคชสำหรับ ReactPHP อ่านเอกสารประกอบ
ChildProcess Library สำหรับดำเนินการกระบวนการลูก อ่านเอกสารประกอบ
PromiseTimer การใช้งานการหมดเวลาเล็กน้อยสำหรับ Promise lib ของ ReactPHP อ่านเอกสารประกอบ
PromiseStream ลิงก์ที่ขาดหายไประหว่าง Promise-land และ Stream-land สร้างขึ้นบน ReactPHP อ่านเอกสารประกอบ
ไคลเอนต์ Thruway PHP และไลบรารีเราเตอร์สำหรับ Autobahn และ WAMP (โปรโตคอลการส่งข้อความแอปพลิเคชันเว็บ) สำหรับการส่งข้อความแอปพลิเคชันแบบเรียลไทม์ voryx/Thruway
PPM - ตัวจัดการกระบวนการ PHP PPM เป็นตัวจัดการกระบวนการ ซุปเปอร์ชาร์จเจอร์ และโหลดบาลานเซอร์สำหรับแอปพลิเคชัน PHP สมัยใหม่ php-pm/php-pm
php-ar-drone พอร์ตของ node-ar-drone ซึ่งอนุญาตให้ผู้ใช้ควบคุม Parrot AR Drone ผ่าน PHP jolicode/php-ar-drone
เซิร์ฟเวอร์ Ratchet Asynchronous WebSocket ratchetphp / Ratchet
ไลบรารีไคลเอ็นต์ PHP แบบอะซิงโครนัส PredisAsync สำหรับ Redis ที่สร้างขึ้นบน ReactPHP nrk/predis-async
เบาะแส/เซิร์ฟเวอร์ Redis การใช้งานเซิร์ฟเวอร์ Redis ในเบาะแส/เซิร์ฟเวอร์ Redis ของ PHP ล้วนๆ
และอื่นๆ อีกมากมายในหน้าวิกิของเรา »
Sergey Zhuk ชุดบทความที่ครอบคลุม ReactPHP: ตั้งแต่พื้นฐานไปจนถึงตัวอย่างการใช้งานจริง sergeyzhuk.me
ชุดบล็อกของ Cees-Jan Kiewiet เกี่ยวกับส่วนประกอบ ReactPHP ต่างๆ และวิธีการทำงาน blog.wyrihaximus.net
Loïc Faugeron Super Speed Symfony - ReactPHP gnugat.github.io
Marc J. Schmidt นำประสิทธิภาพสูงมาสู่แอป PHP ของคุณ (ด้วย ReactPHP) marcjschmidt.de
Marc Morera เมื่อ ReactPHP พบกับ Symfony medium.com/@apisearch
Christian Lück ก้าวข้ามขีดจำกัดด้วย ReactPHP
Jeremy Mikola Async PHP พร้อม React
Igor Wiedler PHP ที่ขับเคลื่อนด้วยเหตุการณ์
ReactPHP ประกอบด้วยชุดของส่วนประกอบแต่ละส่วน ซึ่งหมายความว่าแทนที่จะติดตั้งบางอย่างเช่น "เฟรมเวิร์ก ReactPHP" คุณจะเลือกเฉพาะส่วนประกอบที่คุณต้องการเท่านั้น
โปรเจ็กต์นี้ติดตาม SemVer สำหรับส่วนประกอบที่มีความเสถียรทั้งหมด วิธีที่แนะนำในการติดตั้งส่วนประกอบเหล่านี้คือผ่าน Composer ยังใหม่กับนักแต่งเพลงใช่ไหม?
ตัวอย่างเช่น นี่อาจมีลักษณะดังนี้:
# recommended install: pick required components
composer require react/event-loop react/http
อีกทางเลือกหนึ่ง เรายังจัดเตรียมแพ็คเกจเมตาที่จะติดตั้งส่วนประกอบที่เสถียรทั้งหมดในครั้งเดียว แนะนำให้ติดตั้งสิ่งนี้สำหรับการสร้างต้นแบบอย่างรวดเร็วเท่านั้น เนื่องจากรายการส่วนประกอบที่มีความเสถียรอาจเปลี่ยนแปลงเมื่อเวลาผ่านไป แพ็คเกจเมตานี้สามารถติดตั้งได้ดังนี้:
# quick protoyping only: install all stable components
composer require react/react:^1.4
สำหรับรายละเอียดเพิ่มเติม โปรดดูที่หน้าแรกของ ReactPHP เพื่อดูตัวอย่างการเริ่มต้นอย่างรวดเร็วและรายละเอียดการใช้งาน
ดูเพิ่มเติมที่บันทึกการเปลี่ยนแปลงแบบรวมสำหรับส่วนประกอบ ReactPHP ทั้งหมดสำหรับรายละเอียดเกี่ยวกับการอัปเกรดเวอร์ชัน
คุณมีคำถามและต้องการความช่วยเหลือเกี่ยวกับ ReactPHP หรือไม่? ไม่ต้องกังวล เราพร้อมให้ความช่วยเหลือ!
ในขั้นตอนแรก ให้ตรวจสอบเอกสารประกอบโดยละเอียดที่มาพร้อมกับแต่ละส่วนประกอบ (ดูลิงก์ไปยังเอกสารประกอบแต่ละรายการสำหรับแต่ละส่วนประกอบด้านบน) หากคุณพบว่าคำถามของคุณไม่ได้รับคำตอบในเอกสารประกอบ ก็มีโอกาสที่คำถามนั้นจะเกี่ยวข้องกับผู้คนจำนวนมากขึ้น โปรดอย่าลังเลที่จะส่งคำถามของคุณเป็นปัญหาในองค์ประกอบที่เกี่ยวข้อง เพื่อให้ผู้อื่นสามารถมีส่วนร่วมได้เช่นกัน
คุณยังสามารถตรวจสอบห้องสนทนา Gitter อย่างเป็นทางการของเราได้ คนส่วนใหญ่ที่เกี่ยวข้องกับโครงการนี้อยู่ในห้องสนทนานี้ คำถามมากมายจะได้รับคำตอบภายในไม่กี่นาทีถึงบางชั่วโมง นอกจากนี้เรายังใช้ห้องสนทนานี้เพื่อประกาศการเปิดตัวใหม่และความพยายามในการพัฒนาที่กำลังดำเนินอยู่ ดังนั้นโปรดพิจารณาอยู่ในห้องสนทนานี้ต่อไปอีกสักหน่อย
ติดตาม @reactphp บน Twitter เพื่อรับข้อมูลอัปเดต เราใช้สิ่งนี้เป็นส่วนใหญ่สำหรับการอัปเดตที่สำคัญและสำคัญกว่า และเพื่อให้ชุมชนได้รับการอัปเดตเกี่ยวกับความพยายามในการพัฒนาที่กำลังดำเนินอยู่ คุณสามารถใช้แฮชแท็ก #reactphp
ได้ตลอดเวลาหากคุณมีอะไรจะแบ่งปัน!
เราเป็นโครงการที่เปิดกว้างมากและเราต้องการการสื่อสารสาธารณะทุกครั้งที่เป็นไปได้ เพื่อให้ผู้คนจำนวนมากขึ้นสามารถมีส่วนร่วมและช่วยรับโซลูชันที่ดีที่สุดได้ ในขณะเดียวกัน เราก็ตระหนักดีว่าบางสิ่งควรได้รับการกล่าวถึงเป็นการส่วนตัวจะดีกว่า ไม่ว่าคุณจะเพียงต้องการกล่าว ขอบคุณ ต้องการรายงานปัญหาด้านความปลอดภัย หรือต้องการช่วยสนับสนุนการพัฒนาคุณสมบัติบางอย่าง คุณสามารถติดต่อทีมหลักเป็นการส่วนตัวโดยส่งอีเมลไปที่ [email protected]
โปรดทราบว่าเราเป็นทีมอาสาสมัครกลุ่มเล็กๆ และพยายามอย่างดีที่สุดเพื่อสนับสนุนใครก็ตามที่ติดต่อเรา
คุณต้องการสนับสนุน ReactPHP หรือไม่? สุดยอด! มาเริ่มด้วยการบอกให้โลกรู้ว่าทำไมคุณถึงคิดว่า ReactPHP นั้นยอดเยี่ยม และพยายามช่วยเหลือผู้อื่นในการเข้าร่วม! ส่งทวีต เขียนบล็อกโพสต์ พูดคุยในกลุ่มผู้ใช้หรือการประชุมในพื้นที่ของคุณ หรือแม้แต่เขียนหนังสือ มีหลายวิธีที่คุณสามารถช่วยได้ คุณสามารถติดต่อเราเป็นการส่วนตัวและช่วยเหลือผู้อื่นผ่านช่องทางการสนับสนุนของเราได้ตลอดเวลา ขอบคุณ!
หากต้องการรันชุดทดสอบ คุณต้องโคลน repo นี้ก่อน จากนั้นจึงติดตั้งการขึ้นต่อกันทั้งหมดผ่าน Composer:
composer install
หากต้องการรันชุดทดสอบ ให้ไปที่รูทโปรเจ็กต์แล้วรัน:
vendor/bin/phpunit
ชุดทดสอบยังมีการทดสอบบูรณาการการทำงานจำนวนหนึ่งที่ต้องอาศัยการเชื่อมต่ออินเทอร์เน็ตที่เสถียร เนื่องจากมีการทดสอบการรวมจำนวนมาก การทดสอบเหล่านี้จึงถูกข้ามไปโดยค่าเริ่มต้นระหว่างการรัน CI หากคุณไม่ต้องการเรียกใช้สิ่งเหล่านี้ คุณสามารถข้ามได้โดยทำดังนี้:
vendor/bin/phpunit --exclude-group internet
MIT ดูใบอนุญาต