Как сохранить данные сеанса в базе данных, а не в файловой системе?

У меня есть два веб-сайта, один - TLS, а другой - нет, оба предназначены для одного и того же клиента, но мне нужны сайты, чтобы делиться друг с другом (и только друг с другом) общими данными дляпользователи, заказы, Счета и т.п.

Это обычно делается с$_SESSION данные, но я, очевидно, они не могут работать на других сайтах, и я обнаружил, что я могу хранить данные сеанса в базе данных (MySQL), а не в файловой системе.

Я покопался и нашелЭто полезное руководство а также это старше, нополезное руководство, Я также нашелэто руководство который имеет немного более современный MySQL.

Я написал интерфейсный класс, но он работает только частично, он сохраняет данные сеанса в базе данных, но не извлекает их. Я также использовалпредложенный метод из руководства PHP.

Мой MySQL (как скопировано из первой пары вышеуказанных ссылок):

CREATE TABLE `sessions` (
  `id` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
  `access` int(10) NOT NULL,
  `data` text COLLATE utf8_unicode_ci NOT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDb DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Пожалуйста, обратите внимание: Прежде чем я покажу вам свой класс интерфейса, пожалуйста, знайте, что соединение Db использует мой собственный пользовательский интерфейс, и это само по себе прекрасно работает.

$sessionDBconnectionUrl содержит сведения о подключении к базе данных сеансов, поскольку я веду сеансы в отдельной базе данных из основного содержимого веб-сайта.

Мой интерфейс класса (как на основе всех вышеупомянутых ссылок)

<?php
/***
 * Created by PhpStorm.
 ***/
class HafSessionHandler implements SessionHandler {
    private $database = null;

    public function __construct($sessionDBconnectionUrl){

        if(!empty($sessionDBconnectionUrl) && file_exists($_SERVER['DOCUMENT_ROOT'].$sessionDBconnectionUrl)) {
            require_once "class.dataBase.php";
            // Instantiate new Database object
            $this->database = new Database($sessionDBconnectionUrl);
        }
        else {
            error_log("Session could not initialise class.");
        }

    }

    /**
     * Open
     */
    public function open($savepath, $id){
         $openRow = $this->database->getSelect("SELECT `data` FROM sessions WHERE id = ? LIMIT 1",$id);
    if($this->database->selectRowsFoundCounter() == 1){
        // Return True
        return $openRow['data'];
        },
    else {
        // Return False
        return ' ';
    }
    /**
     * Read
     */
    public function read($id)
    {
        // Set query
        $readRow = $this->database->getSelect('SELECT `data` FROM sessions WHERE id = ? LIMIT 1', $id,TRUE);
        if ($this->database->selectRowsFoundCounter() > 0) {
            return $readRow['data'];
        } else {
            error_log("could not read session id ".$id);
            return '';
        }
    }

    /**
     * Write
     */
    public function write($id, $data)
    {
        $access = time();
        // Set query
        $dataReplace[0] = $id;
        $dataReplace[1] = $access;
        $dataReplace[2] = $data;
        if ($this->database->noReturnQuery('REPLACE INTO sessions(id,access,`data`) VALUES (?, ?, ?)', $dataReplace)) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    /**
     * Destroy
     */
    public function destroy($id)
    {
        // Set query
        if ($this->database->noReturnQuery('DELETE * FROM sessions WHERE id = ? ', $id)) {
            return TRUE;
        } else {

            return FALSE;
        }
    }
    /**
     * Close
     */
    public function close(){
        // Close the database connection
        // If successful
        if($this->database->dbiLink->close){
            // Return True
            return true;
        }
        // Return False
        return false;
    }

    /**
     * Garbage Collection
     */
    public function gc($max)
    {
        // Calculate what is to be deemed old
        $old = time() - $max;

        // Set query
        if ($this->database->noReturnQuery('DELETE * FROM sessions WHERE access < ?', $old)) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    public function __destruct()
    {
        $this->close();
    }

}

Моя тестовая страница&nbsp;(написано с нуля!)

<?php
require "class.sessionHandler.inc.php";
$HSH = new HafSessionHandler("connection.session.dbxlink.php");
session_set_save_handler( $HSH, TRUE );
session_start();

print "<p>Hello this is an index page</p>";
$_SESSION['horses'] = "treesx3";
$_SESSION['tiespan'] = (int)$_SESSION['tiespan']+7;

print "<p>There should be some session data in the database now. <a href='index3.php'>link</a></p>";
var_dump($_SESSION);


exit;

Выпуск:

Тестовые страницы, которые я запускаю, сохраняют данные в базе данных, но они, похоже, не получают данные,

У меня включено ведение журнала ошибок, и об ошибках PHP не сообщается. О критических ошибках MySQL не сообщается.

Почему это не работает?