expressif / stream
事件驱动的流包装器
0.1.0-rc2
2015-01-28 21:01 UTC
Requires
- php: >=5.6.0
- ext-libevent: >=0.1.0
This package is not auto-updated.
Last update: 2024-09-28 16:56:59 UTC
README
事件驱动的流包装器(由 expressif/http 和 expressif/cluster 使用)
要求
- php 5.6+
- libevent 0.1.0
安装
从 pecl 获取 libevent 库: https://php.ac.cn/manual/fr/libevent.installation.php
注意:对于 Windows,您可以从这里下载库: https://github.com/expressif/win-dist
将此库作为依赖项添加 composer require expressif/stream
使用
EventEmitter
此类处理回调监听器和事件发射
<?php
require 'vendor/autoload.php';
use Expressif\Stream\EventEmitter;
class Foo extends EventEmitter {
public function bar() {
$this->emit('bar', ['baz']);
}
}
$foo = new Foo();
$foo->on('bar', function($what) {
echo "Foo $what !\n";
});
$foo->bar();
计时器
此辅助器提供了一种定期执行指定代码的方式
<?php
require 'vendor/autoload.php';
use Expressif\Stream\Loop;
Loop::setInterval(function() {
echo 'Now is ' . date('H:i:s') . "\n";
}, 1000);
缓冲区
此类处理缓冲读取和写入
<?php
require 'vendor/autoload.php';
use Expressif\Stream\Loop;
$buffer = Loop::buffer('tcp://173.194.66.104:80');
$buffer->read(function($response) {
echo '<- ' . $response;
});
$buffer->on('write', function() {
echo "-> Request sent\n";
});
$buffer->on('close', function() {
echo "*** response is finished ***\n";
});
$buffer->write("GET / HTTP/1.0\r\nHost: www.google.com\r\n\r\n");