• 首页
  • css3教程
  • html5教程
  • jQuery手册
  • php7教程
  • MySQL手册
  • apache手册
  • 位置: php7教程 -> PECL扩展库

    Varnish(代理服务器和缓存)

    此 PECL 扩展未与 PHP 捆绑。使用此扩展,您将需要安装版本>=3.0的Varnish Cache,可在Varnish Cache主页上找到

    Basic VarnishAdmin usage

    The example illustrates a simple usage of the ban functionality

    Example #1 Ban an URL

    <?php
    $args = array(
        VARNISH_CONFIG_HOST    => "::1",
        VARNISH_CONFIG_PORT    => 6082,
        VARNISH_CONFIG_SECRET  => "5174826b-8595-4958-aa7a-0609632ad7ca",
        VARNISH_CONFIG_TIMEOUT => 300,
    );
    $va = new VarnishAdmin($args);
    try {
        if(!$va->connect()) {
            throw new VarnishException("Connection failed\n");
        }   
    } catch (VarnishException $e) {
        echo $e->getMessage();
        exit(3);
    }
    try {
        if(!$va->auth()) {
            throw new VarnishException("Auth failed\n");
        }   
    } catch (VarnishException $e) {
        echo $e->getMessage();
        exit(3);
    }
    try {
        $status = $va->ban('req.url ~ "^/$"');
        if (VARNISH_STATUS_OK != $status) {
            throw new VarnishException("Ban method returned $status status\n");
        }
    } catch (VarnishException $e) {
        echo $e->getMessage();
        exit(3);
    }
    exit(0);
    ?>
    

    Basic VarnishStat usage

    The example illustrates getting varnish statistic snapshot from shared memory

    Example #1 Get statistic snapshot

    <?php
    $vs = new VarnishStat;
    try {
        $data = $vs->getSnapshot();
    } catch (VarnishException $e) {
        echo $e->getMessage();
        exit(3);
    }
    exit(0);
    ?>
    

    Basic VarnishLog usage

    The example illustrates reading varnish log lines from shared memory

    Example #1 Read varnish shared memory log

    <?php
    $vl = new VarnishLog;
    while(1) {
        $line = $vl->getLine();
        printf("%s %d %s", VarnishLog::getTagName($line['tag'], $line['id'],
        $line['data']);
    }
    exit(0);
    ?>
    

    The VarnishAdmin class

    (PECL varnish >= 0.3)

    VarnishAdmin 
    {
    	/* 方法 */
    	public auth ( void ) : bool
    	public ban ( string $vcl_regex ) : int
    	public banUrl ( string $vcl_regex ) : int
    	public clearPanic ( void ) : int
    	public connect ( void ) : bool
    	public __construct ([ array $args ] )
    	public disconnect ( void ) : bool
    	public getPanic ( void ) : string
    	public getParams ( void ) : array
    	public isRunning ( void ) : bool
    	public setCompat ( int $compat ) : void
    	public setHost ( string $host ) : void
    	public setIdent ( string $ident ) : void
    	public setParam ( string $name , string|integer $value ) : int
    	public setPort ( int $port ) : void
    	public setSecret ( string $secret ) : void
    	public setTimeout ( int $timeout ) : void
    	public start ( void ) : int
    	public stop ( void ) : int
    }