Heim > Backend-Entwicklung > PHP-Tutorial > Es ist sehr seltsam, dass Phar in Phar eingeführt wurde, aber ein Fehler gemeldet wird, der besagt, dass die PredisClient-Klasse nicht gefunden werden kann?

Es ist sehr seltsam, dass Phar in Phar eingeführt wurde, aber ein Fehler gemeldet wird, der besagt, dass die PredisClient-Klasse nicht gefunden werden kann?

WBOY
Freigeben: 2016-09-09 08:28:00
Original
1074 Leute haben es durchsucht

<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>
Nach dem Login kopieren
Nach dem Login kopieren

Dies ist das Verzeichnis
Es ist sehr seltsam, dass Phar in Phar eingeführt wurde, aber ein Fehler gemeldet wird, der besagt, dass die PredisClient-Klasse nicht gefunden werden kann?

Antwortinhalt:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

Dies ist das Verzeichnis
Es ist sehr seltsam, dass Phar in Phar eingeführt wurde, aber ein Fehler gemeldet wird, der besagt, dass die PredisClient-Klasse nicht gefunden werden kann?

Verwendung bedeutet die Verwendung eines Namensraums

PredisClient verwenden;

Verwenden Sie die Client-Klasse im Predis-Bereich

<code>use \Predis\Client;</code>
Nach dem Login kopieren

Oder da unten der vollständige Namespace verwendet wird, entfernen Sie einfach die Verwendung

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage