2017 © Pedro Peláez
 

library tproto

Stream transfer/receive objects over HTTP

image

rv/tproto

Stream transfer/receive objects over HTTP

  • Friday, March 23, 2018
  • by vasilevrv
  • Repository
  • 1 Watchers
  • 0 Stars
  • 3 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

tproto

How to use.

Create Transmitter. For example, use transmitter with unbuffered PDO query and symfony:, (*1)

return new \Symfony\Component\HttpFoundation\StreamedResponse(function() use ($pdo) {
    $tm = new \RV\TProto\Proto\Transmitter\Transmitter(function($data) {
        echo $data;
    }, null, true);

    $pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
    $res = $pdo->query("SELECT id, status FROM tblclients");
    while (false !== ($row = $res->fetch(\PDO::FETCH_ASSOC))) {
        $tm->send($row);
    }
});

Create receiver. For example (now there is only guzzle adapter, you can use your own adapters):, (*2)

$stream = $client->get('https://test.com/stream')->getBody();
$update = new \RV\TProto\Proto\Receiver\Receiver($stream, function($data) {
    print_r($data);
});
$update->run();

If you need to receive objects not one at a time, but a batch, then you can use BatchReceiver (200 in batch, for example):, (*3)

$stream = $client->get('https://test.com/stream')->getBody();
$update = new \RV\TProto\Proto\Receiver\BatchReceiver($stream, function($data) {
    print count($data);
}, null, 200);
$update->run();

Also, you can use customize serializer and DTO:, (*4)

class Client
{
    public $id;
    public $status;

    public function __construct($id, $status)
    {
        $this->id = $id;
        $this->status = $status;
    }
}
class CustomSerializer implements \RV\TProto\Serializer\SerializerInterface
{
    public function serialize($data)
    {
        return $data['id'].";".$data['status'];
    }

    public function deserialize($data)
    {
        return new Client($data['id'], $data['status']);
    }

    public function getDelimiter()
    {
        return ":";
    }
}

And use it on transmitter and receiver, for example receiver:, (*5)

$update = new \RV\TProto\Proto\Receiver\Receiver($stream, function($data) {
    var_dump($data);
}, new CustomSerializer());

It print object:, (*6)

object(Client)#1 (2) {
  ["id"]=>
  int(123)
  ["status"]=>
  int(0)
}

The Versions

23/03 2018

dev-master

9999999-dev

Stream transfer/receive objects over HTTP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

json transfer buffer

22/03 2018

v0.1

0.1.0.0

Stream transfer/receive objects over HTTP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

json transfer buffer

22/03 2018

0.1.x-dev

0.1.9999999.9999999-dev

Stream transfer/receive objects over HTTP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

json transfer buffer