Extensión de evento de PHP El evento lanzó la versión beta 3.0.0, oficialmente compatible con PHP 8

La extensión de eventos de PHP Event encapsula la biblioteca libevent y proporciona una interfaz de programación orientada a objetos. Los desarrolladores pueden usar PHP para escribir rápidamente aplicaciones controladas por eventos basadas en la extensión Event. Incluyendo servidor y cliente HTTP / HTTPS sin bloqueo impulsado por eventos, temporizadores y señales.

El responsable de la extensión de eventos, Ruslan Osmanov, es un programador ruso que también mantiene 3 extensiones de eventos PHP:

  • Evento (libevent), Ev (libev), Eio (libeio), La actividad de desarrollo de eventos es la más alta.
  • La capa inferior de los frameworks PHP basados ​​en memoria y controlados por eventos como ReactPHP, WorkerMan y AmPHP es el paquete PHP de las bibliotecas de eventos anteriores.

Ejemplo de código PHP proporcionado por Event: https://bitbucket.org/osmanov/pecl-event/src/master/examples/

Documento del sitio web oficial de PHP proporcionado por Event: https://php.net/event

Un servidor HTTP sin bloqueo controlado por eventos de un solo proceso, que incluye señales sin bloqueo y temporizadores periódicos, y ejecución simultánea de múltiples servicios:

<?php

// 事件管理器
$base = new EventBase();

// 事件驱动非阻塞的HTTP服务器
$http = new EventHttp($base);
$http->bind('0.0.0.0', 8888);
$http->setDefaultCallback(function($req) {
	$buf = new EventBuffer();
	$req->addHeader('Content-Type', 'text/html; charset=utf-8', EventHttpRequest::OUTPUT_HEADER);
	$buf->add('<html>Hello World</html>');
	$req->sendReply(200, 'OK', $buf);
	return;
});

// 事件驱动非阻塞的HTTP客户端
// EventHttpConnection::makeRequest

// 在终端 Ctrl+C 发送 SIGINT 信号给 PHP 进程
$signal = new Event($base, SIGINT, Event::SIGNAL, function() use (&$base) {
	echo "\n捕获 SIGINT 信号,关闭事件循环,退出程序\n";
	$base->stop();
});
$signal->add();

// 周期性定时器,每隔 1/2 秒触发一次
$timer = new Event($base, -1, Event::TIMEOUT | Event::PERSIST, function() use (&$timer) {
	echo date('Y-m-d H:i:s'). "\n";
});
$timer->add(1/2);

// 启动事件循环
$base->loop();

 

Supongo que te gusta

Origin www.oschina.net/news/119719/event-3-0-0-beta-released
Recomendado
Clasificación