Задать вопрос

Как работает Libevent?

Недавно появилась необходимость добавить событийности в готовы продукт.

Есть готовый сайт. Когда-то возникла необходимость на определённые действия пользователя сделать задержку.

//some code...
sleep (10);
//some code...


Делал не я, и, на мой взгляд, это расточительно по ресурсам. Хотелось бы чтобы это было что-то наподобие

setTimeout(function(){/*some code*/, 10}

Начал было копать в сторону NodeJS, он же асинхронен. То-есть спереди поставить nginx и уже им, в зависимости от адреса, что-то кормить PHP, а что-то NodeJS. Но потом я посидел подумал, "чего горячку пороть" и начал читать чего такого прекрасного есть в PHP.
Увидел что, есть Libevent, Но так и не понял, как она работает. То-есть в моём понимании запустился скрипт php, отработал и умер (в случае с sleep он ещё и просто висит некоторое время), а как с libevent происходит? Висит ли скрипт? Как по высокой нагрузке?
  • Вопрос задан
  • 3306 просмотров
Подписаться 7 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@WhoMe
Висит. Libevent не добвляет никакой магии и предполагает работу с неблокирующими вызовами. У Вас таких нет.
Ответ написан
Комментировать
alekciy
@alekciy
Вёбных дел мастер
В контексте "возникла необходимость на определённые действия пользователя сделать задержку" код sleep (10) эквивалентен setTimeout(function(){/*some code*/, 10} (особо подчеркиваю, по логике, а не по реализации в языке!).

Входных данных не много, но мне так видится, то движение в сторону libevent тупиковое. Заходить нужно совершенно с другой стороны.
Ответ написан
@damour
Как вариант реализовать обработку запросов на reactphp

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

$http = new React\Http\Server($socket);

$http->on('request', function ($request, $response) {
... your code
});


http клиент
Реализацию таймеров для libevent в reactphp скорее всего нужно будет дописать самому.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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