Overview

Namespaces

  • bandwidthThrottle

Classes

  • BandwidthThrottle
  • TokenBucketFilter

Exceptions

  • BandwidthThrottleException
  • Overview
  • Namespace
  • Class

Class TokenBucketFilter

Stream filter which uses a token bucket for traffic shaping.

When the filter is created with stream_filter_append() or stream_filter_prepend(), the $param parameter is expected to be an instance of TokenBucket.

This filter can shape traffic in both directions. I.e. you can append it to an output stream as well to an input stream.

Example:

use bandwidthThrottle\TokenBucketFilter;
use bandwidthThrottle\tokenBucket\TokenBucket;
use bandwidthThrottle\tokenBucket\Rate;
use bandwidthThrottle\tokenBucket\storage\SingleProcessStorage;

$in  = fopen(__DIR__ . "/resources/video.mpg", "r");
$out = fopen("php://output", "w");

$storage = new SingleProcessStorage();
$rate    = new Rate(100 * 1024, Rate::SECOND); // Rate of 100KiB/s
$bucket  = new TokenBucket(100 * 1024, $rate, $storage);

stream_filter_register("throttle", TokenBucketFilter::class);
stream_filter_append($out, "throttle", STREAM_FILTER_WRITE, $bucket);

stream_copy_to_stream($in, $out);
php_user_filter
Extended by bandwidthThrottle\TokenBucketFilter
Namespace: bandwidthThrottle
License: WTFPL
Author: Markus Malkusch markus@malkusch.de
Link: Donations
Located at TokenBucketFilter.php
Methods summary
public
# onCreate( )

Builds the token bucket consumer.

Builds the token bucket consumer.

Throws

InvalidArgumentException
The token bucket was not passed in the $params parameter.

Overrides

php_user_filter::onCreate()
public integer
# filter( resource $in, resource $out, integer & $consumed, boolean $closing )

Traffic shaping.

Traffic shaping.

Parameters

$in
The input stream.
$out
The ouput stream.
$consumed
The amount of consumed bytes.
$closing
If the stream is closing.

Returns

integer
The processing state.

Suppresswarnings("short")

Suppresswarnings("unused")

Overrides

php_user_filter::filter()
Methods inherited from php_user_filter
onClose()
Properties inherited from php_user_filter
$filtername, $params
API documentation generated by ApiGen