> 백엔드 개발 > PHP 튜토리얼 > 참 이상하네요. Phar가 phar를 도입했는데 PredisClient 클래스를 찾을 수 없다고 오류가 보고됐네요.

참 이상하네요. Phar가 phar를 도입했는데 PredisClient 클래스를 찾을 수 없다고 오류가 보고됐네요.

WBOY
풀어 주다: 2016-09-09 08:28:00
원래의
1074명이 탐색했습니다.

<code><?php

require 'Predis.phar';
use Predis\Client;

ini_set('session.save_path', 'tcp://localhost:6379');
ini_set('session.name', 'YMFSESSION');
ini_set('session.save_handler', 'user');

class MySession implements SessionHandlerInterface {
    private $redis;

    private function connect() {
        if(!$this->redis) {
            $cfg = [
                'scheme' => 'tcp',
                'host' => '127.0.0.1',
                'port' =>  6379
            ];
            $this->redis = new \Predis\Client($cfg);
        }
    }

    /**
     * Close the session
     * @since 5.4.0
     */
    public function close()
    {
        $this->redis->quit();
        return true;
    }

    /**
     * Destroy a session
     * @since 5.4.0
     */
    public function destroy($session_id)
    {
        $this->connect();
        return $this->redis->del($session_id);
    }

    /**
     * Cleanup old sessions
     * @since 5.4.0
     */
    public function gc($maxlifetime)
    {
        return true;
    }

    /**
     * Initialize session
     * @since 5.4.0
     */
    public function open($save_path, $session_id)
    {
        return true;
    }

    /**
     * Read session data
     * @since 5.4.0
     */
    public function read($session_id)
    {
        $this->connect();
        $data = $this->redis->get($session_id);
        return $data;
    }

    /**
     * Write session data
     * @since 5.4.0
     */
    public function write($session_id, $session_data)
    {
        $this->connect();
        $expire  =  configure('Ymf.Account.expire');
        if(is_int($expire) && $expire > 0) {
            $result = $this->redis->setex($session_id, $expire, $session_data);
            $re = $result ? 'true' : 'false';
        }else{
            $result = $this->redis->set($session_id, $session_data);
            $re = $result ? 'true' : 'false';
        }
        var_dump($result);
        return $re;
    }
}


session_set_save_handler(new MySession());

session_start();

$_SESSION['name'] = 43;
</code>
로그인 후 복사
로그인 후 복사

这是目录
참 이상하네요. Phar가 phar를 도입했는데 PredisClient 클래스를 찾을 수 없다고 오류가 보고됐네요.

回复内容:

<code><?php

require 'Predis.phar';
use Predis\Client;

ini_set('session.save_path', 'tcp://localhost:6379');
ini_set('session.name', 'YMFSESSION');
ini_set('session.save_handler', 'user');

class MySession implements SessionHandlerInterface {
    private $redis;

    private function connect() {
        if(!$this->redis) {
            $cfg = [
                'scheme' => 'tcp',
                'host' => '127.0.0.1',
                'port' =>  6379
            ];
            $this->redis = new \Predis\Client($cfg);
        }
    }

    /**
     * Close the session
     * @since 5.4.0
     */
    public function close()
    {
        $this->redis->quit();
        return true;
    }

    /**
     * Destroy a session
     * @since 5.4.0
     */
    public function destroy($session_id)
    {
        $this->connect();
        return $this->redis->del($session_id);
    }

    /**
     * Cleanup old sessions
     * @since 5.4.0
     */
    public function gc($maxlifetime)
    {
        return true;
    }

    /**
     * Initialize session
     * @since 5.4.0
     */
    public function open($save_path, $session_id)
    {
        return true;
    }

    /**
     * Read session data
     * @since 5.4.0
     */
    public function read($session_id)
    {
        $this->connect();
        $data = $this->redis->get($session_id);
        return $data;
    }

    /**
     * Write session data
     * @since 5.4.0
     */
    public function write($session_id, $session_data)
    {
        $this->connect();
        $expire  =  configure('Ymf.Account.expire');
        if(is_int($expire) && $expire > 0) {
            $result = $this->redis->setex($session_id, $expire, $session_data);
            $re = $result ? 'true' : 'false';
        }else{
            $result = $this->redis->set($session_id, $session_data);
            $re = $result ? 'true' : 'false';
        }
        var_dump($result);
        return $re;
    }
}


session_set_save_handler(new MySession());

session_start();

$_SESSION['name'] = 43;
</code>
로그인 후 복사
로그인 후 복사

这是目录
참 이상하네요. Phar가 phar를 도입했는데 PredisClient 클래스를 찾을 수 없다고 오류가 보고됐네요.

use 是使用命名空间的意思

use Predis\Client;

使用Predis空间下的 client 类

<code>use \Predis\Client;</code>
로그인 후 복사

或者即然下面使用时用的完整命名空间,直接把use去掉

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿