L'extension d'événement PHP Event a publié la version bêta 3.0.0, prend officiellement en charge PHP 8

L'extension d'événement PHP Event encapsule la bibliothèque libevent et fournit une interface de programmation orientée objet. Les développeurs peuvent utiliser PHP pour écrire rapidement des applications événementielles basées sur l'extension Event. Y compris serveur et client HTTP / HTTPS non bloquants pilotés par les événements, minuteries et signaux.

Le mainteneur de l'extension d'événements Ruslan Osmanov est un programmeur russe qui gère également 3 extensions d'événements PHP:

  • Événement (libevent), Ev (libev), Eio (libeio), l'activité de développement d'événements est la plus élevée.
  • Les frameworks PHP sous-jacents résidant en mémoire et pilotés par les événements tels que ReactPHP, WorkerMan et AmPHP utilisent l'encapsulation PHP des bibliothèques d'événements ci-dessus.

Exemple de code PHP fourni par Event: https://bitbucket.org/osmanov/pecl-event/src/master/examples/

Document du site Web officiel PHP fourni par Event: https://php.net/event

Un serveur HTTP non bloquant, piloté par événement, comprenant des signaux non bloquants et des minuteries périodiques, exécution simultanée de plusieurs services:

<?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();

 

Je suppose que tu aimes

Origine www.oschina.net/news/119719/event-3-0-0-beta-released
conseillé
Classement