expressif/stream

事件驱动的流包装器

0.1.0-rc2 2015-01-28 21:01 UTC

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");