Event-driven, неблокирующий ввод/вывод с PHP.
ReactPHP — это низкоуровневая библиотека для событийно-ориентированного программирования на PHP. В её основе лежит цикл обработки событий, поверх которого предоставляются низкоуровневые утилиты, такие как абстракция потоков, асинхронный 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 готов к работе и проверен в бою с миллионами установок из самых разных проектов по всему миру. Его событийная архитектура делает его идеальным выбором для эффективных сетевых серверов и клиентов, обрабатывающих сотни или тысячи одновременных подключений, долго работающих приложений и многих других форм совместной многозадачности с неблокирующими операциями ввода/вывода. Что делает ReactPHP особенным, так это его яркая экосистема с сотнями сторонних библиотек, позволяющих интегрироваться со многими существующими системами, такими как общие сетевые службы, системы баз данных и другие сторонние API.
ReactPHP по умолчанию неблокирующий. Используйте воркеров для блокирующего ввода/вывода. Цикл обработки событий основан на шаблоне реактора (отсюда и название) и сильно вдохновлён такими библиотеками, как EventMachine (Ruby), Twisted (Python) и Node.js (V8).
Этот репозиторий, который вы сейчас просматриваете, в основном используется в качестве метарепозитория для обсуждения и планирования всего, что связано с @ReactPHP. См. отдельные компоненты ниже для получения более подробной информации о каждом компоненте, его документации и исходном коде.
EventLoop Основной реактор событий ReactPHP. Прочитать документацию
Stream Событийно-управляемые читаемые и записываемые потоки для неблокирующего ввода/вывода в ReactPHP. Прочитать документацию
Promise Обещания/A реализация для PHP. Прочитать документацию
Async Асинхронные утилиты и волокна для ReactPHP. Прочитать документацию
Datagram — управляемые событиями клиентские и серверные сокеты UDP для ReactPHP. Ознакомьтесь с документацией.
HTTP — управляемый событиями потоковый HTTP-клиент и реализация сервера для ReactPHP. Ознакомьтесь с документацией.
DNS — асинхронный DNS-резолвер для ReactPHP. Ознакомьтесь с документацией.
Cache — асинхронное кэширование для ReactPHP. Ознакомьтесь с документацией.
ChildProcess — библиотека для выполнения дочерних процессов. Ознакомьтесь с документацией.
PromiseTimer — тривиальная реализация таймера для библиотеки Promise в ReactPHP. Ознакомьтесь с документацией.
PromiseStream — недостающее звено между миром Promise и миром Stream, построенное на основе ReactPHP. Ознакомьтесь с документацией.
Thruway — PHP-клиент и маршрутизатор для Autobahn и WAMP (Web Application Messaging Protocol) для обмена сообщениями в режиме реального времени. voryx/Thruway.
PPM — PHP Process Manager — PPM — это менеджер процессов, нагнетатель и балансировщик нагрузки для современных PHP-приложений. php-pm/php-pm.
php-ar-drone — 🚁 порт node-ar-drone, который позволяет пользователю управлять Parrot AR Drone через PHP. jolicode/php-ar-drone.
Ratchet — асинхронный WebSocket-сервер. ratchetphp/Ratchet.
Predis\Async — асинхронная PHP-библиотека для Redis, созданная на основе ReactPHP. nrk/predis-async.
clue/redis-server — реализация Redis-сервера на чистом PHP. clue/redis-server.
И многое другое на нашей вики-странице ».
Сергей Жук — серия статей о ReactPHP: от основ до реальных примеров приложений. sergeyzhuk.me.
Сис-Ян Кивет — серия блогов о нескольких компонентах ReactPHP и их работе. blog.wyrihaximus.net.
Лоик Фогерон — Super Speed Symfony — ReactPHP. gnugat.github.io.
Марк Дж. Шмидт — Внесите высокую производительность в своё PHP-приложение (с помощью ReactPHP). marcjschmidt.de.
Марк Морера — Когда ReactPHP встречается с Symfony. medium.com/@apisearch.
Кристиан Люк — Расширение границ с ReactPHP.
Джереми Микола — Асинхронный PHP с React.
Игорь Видлер — Управляемый событиями PHP.
ReactPHP состоит из набора отдельных компонентов. Это означает, что вместо установки чего-то вроде «фреймворка ReactPHP» вы фактически выбираете только те компоненты, которые вам нужны.
Этот проект следует SemVer для всех своих стабильных компонентов. Рекомендуемый способ установки этих компонентов — через Composer. Новичок в Composer?.
Например, это может выглядеть примерно так:
# рекомендуемая установка: выберите необходимые компоненты
composer require react/event-loop react/http
В качестве альтернативы мы также предоставляем метапакет, который установит все стабильные компоненты сразу. Установка этого рекомендуется только для быстрого прототипирования, поскольку список стабильных компонентов может со временем меняться. Этот метапакет можно установить следующим образом:
# быстро
``` **Прототипирование: установка всех стабильных компонентов**
```composer require react/react:^1.4```
Для получения более подробной информации посетите домашнюю страницу ReactPHP, где вы найдёте примеры быстрого старта и детали использования.
Также смотрите объединённый журнал изменений для всех компонентов ReactPHP для получения сведений об обновлениях версий.
## Поддержка
У вас есть вопрос и вам нужна помощь с ReactPHP? Не волнуйтесь, мы здесь, чтобы помочь!
В качестве первого шага проверьте подробную документацию, которая поставляется с каждым компонентом (см. ссылки на индивидуальную документацию для каждого компонента выше). Если вы обнаружите, что ваш вопрос не освещён в документации, есть большая вероятность того, что он может быть актуален для большего числа людей. Пожалуйста, не стесняйтесь зарегистрировать свой вопрос как проблему в соответствующем компоненте, чтобы другие также могли принять участие.
Вы также можете посетить наш официальный чат Gitter (https://gitter.im/reactphp/reactphp). Большинство людей, участвующих в этом проекте, доступны в этой комнате чата, поэтому многие вопросы получают ответы в течение нескольких минут или часов. Мы также используем эту комнату чата для объявления всех новых выпусков и текущих усилий по разработке, так что подумайте о том, чтобы остаться в этой комнате чата подольше.
Кроме того, следите за обновлениями @reactphp в Twitter. Мы используем его в основном для заметных крупных обновлений и для информирования сообщества о текущих усилиях по разработке. Вы всегда можете использовать хэштег #reactphp, если у вас есть чем поделиться!
Мы очень открытый проект, и мы предпочитаем публичное общение, когда это возможно, чтобы больше людей могли участвовать и помогать находить лучшие решения. В то же время мы понимаем, что некоторые вещи лучше решать в частном порядке. Хотите ли вы просто сказать «спасибо», сообщить о проблеме безопасности или хотите помочь спонсировать разработку определённой функции, вы можете обратиться к основной команде в частном порядке, отправив электронное письмо на адрес support@reactphp.org. Пожалуйста, имейте в виду, что мы небольшая команда добровольцев и делаем всё возможное, чтобы поддержать любого, кто обращается к нам.
Хотите поддержать ReactPHP? Отлично! Давайте начнём с того, что расскажем миру, почему вы считаете ReactPHP потрясающим, и попытаемся помочь другим присоединиться! Отправьте твит, напишите пост в блоге, выступите на местной группе пользователей или конференции или даже напишите книгу. Есть много способов помочь. Вы всегда можете связаться с нами в частном порядке и помочь другим в наших каналах поддержки. Спасибо!
## Тесты
Чтобы запустить набор тестов, вам сначала нужно клонировать этот репозиторий, а затем установить все зависимости через Composer:
```bash
composer install
Чтобы запустить тестовый набор, перейдите в корень проекта и выполните:
vendor/bin/phpunit
Набор тестов также содержит ряд функциональных интеграционных тестов, которые зависят от стабильного подключения к интернету. Из-за огромного количества интеграционных тестов они по умолчанию пропускаются во время выполнения CI. Если вы также не хотите их запускать, их можно просто пропустить следующим образом:
vendor/bin/phpunit --exclude-group internet
MIT, см. LICENSE.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )