В чем смысл библиотеки ReactPHP? Какие задачи решает?

Всем привет.

Никак не могу понять суть этой библиотеки. Загрузил компонент reactphp/http, взял пример простого http сервера у них с github:
<?php

require '../vendor/autoload.php';

$loop = React\EventLoop\Factory::create();
$socket = new React\Socket\Server($loop);

$http = new React\Http\Server($socket);
$http->on('request', function ($request, $response) {
    sleep(10);
    $response->writeHead(200, array('Content-Type' => 'text/plain'));
    $response->end("Hello World!\n");
});

$socket->listen(1337);
$loop->run();


Добавил sleep перед ответом. Запустил одновременно два запроса и выполнились они друг за другом - общее время выполнения 20 сек. То есть никакой асинхронности нет. В чем смысл библиотеки? Где она полезна? Если любой долгий запрос к базе заблокирует всех клиентов.

Может кто-то объяснить когда и для чего используется эта библиотека?
  • Вопрос задан
  • 9869 просмотров
Решения вопроса 2
Caravus
@Caravus
DevOps
1) Берём событийную библиотеку
2) Пишем в коде sleep(10);
3) ???
4) Пишем на тостер вопрос "а чёж оно блокирует то?!".
Ответ написан
@rumasterov Автор вопроса
Вот здесь ответ от одного из разработчиков на такой же вопрос как у меня возник, может кому-нибудь пригодится: https://github.com/reactphp/react/issues/311
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SerafimArts
@SerafimArts
Senior Notepad Reader
Асинхронность - это выполнение параллельных операций в одном потоке; Мультитрединг, очевидно, в нескольких. Блокировка потока исполнения, вроде функции sleep, а не использование таймера - блокирует поток исполнения (внезапно! Ваш кэп). Надо быть феерически наивным, чтобы ожидать чего-то иного =)
Ответ написан
hOtRush
@hOtRush
те же задачи что и nodejs, та же "асинхронность", тот же event loop
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы