1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-ReactPHP

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 18 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 04:25 5efe56a

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.

  • Готов к работе и проверен в боевых условиях.
  • Надёжен, как скала, с долгосрочными стабильными выпусками поддержки (LTS).
  • Не требует расширений и работает на любой платформе — никаких оправданий!
  • Использует дополнительные расширения для повышения производительности при их наличии.
  • Настоятельно рекомендует последнюю версию PHP 7+ для лучшей производительности и поддержки.
  • Поддерживает устаревшие PHP 5.3+ и HHVM для максимальной совместимости.
  • Имеет хорошо продуманные и многоразовые компоненты.
  • Состоит из отдельных частей, которые можно заменить альтернативными реализациями.
  • Тщательно протестирован (модульный и функциональный).
  • Способствует стандартным PSR, где это возможно, для максимальной интероперабельности.
  • Стремится быть технологически нейтральным, чтобы вы могли использовать предпочитаемый стек приложений.
  • Небольшой основной командой профессионалов, поддерживаемой большой сетью внешних участников.

ReactPHP по умолчанию неблокирующий. Используйте воркеров для блокирующего ввода/вывода. Цикл обработки событий основан на шаблоне реактора (отсюда и название) и сильно вдохновлён такими библиотеками, как EventMachine (Ruby), Twisted (Python) и Node.js (V8).

Этот репозиторий, который вы сейчас просматриваете, в основном используется в качестве метарепозитория для обсуждения и планирования всего, что связано с @ReactPHP. См. отдельные компоненты ниже для получения более подробной информации о каждом компоненте, его документации и исходном коде.

Основные компоненты

Сетевые компоненты

  • Socket Асинхронный, потоковый текстовый TCP/IP и защищённый TLS сокет-сервер и клиентские соединения для... ReactPHP

Ознакомьтесь с документацией

Компоненты утилит

Создано с помощью 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 состоит из набора отдельных компонентов. Это означает, что вместо установки чего-то вроде «фреймворка 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-ReactPHP.git
git@api.gitlife.ru:oschina-mirror/mirrors-ReactPHP.git
oschina-mirror
mirrors-ReactPHP
mirrors-ReactPHP
1.x