Неопределенное свойство: Add :: $ cache - Codeigniter - PullRequest
1 голос
/ 25 июля 2011

У меня возникла серьезная проблема, когда я пытаюсь использовать Memcached драйвер кэширования в Codeigniter.Однако я не могу автоматически загрузить драйвер cache в этом массиве:

$autoload['libraries'] = array('database', 'session', 'parser', 'common', 'cache');

Если я удаляю cache, страница загружается, но если нет, то страница отображается пустой без отчетов об ошибках (обратите внимание, яиметь сообщение об ошибке и установить E_ALL).

В любом случае, поскольку я не могу загрузить cache, я добавил его в свой созданный класс common и загрузил его оттуда, выполнив следующее:

class Common extends CI_Controller {

    function __construct()
    {
        parent::__construct();

        $this->load->driver('cache');
    }
}

Теперь я получаю сообщения об ошибках:

Обнаружена ошибка PHP

Серьезность: Уведомление

Сообщение: неопределенное свойство: Добавить:: $ cache

Имя файла: controllers / add.php

Номер строки: 33 Обнаружена ошибка PHP

Уровень важности: Уведомление

Сообщение: пытаетсяполучить свойство необъекта

Имя файла: controllers / add.php

Номер строки: 33

Какой add.php это:

class Add extends CI_Controller {

    public function index()
    {
        $data = array('page_title' => 'Add your listing');

        $this->load->view('overall_header', $data);

        $sql = "SELECT item_id,
                       item_name
                FROM " . ITEMS_TABLE . "
                WHERE item_visible = 1";

        $items_key = md5('query:' . $sql);

        $result = $this->cache->memcached->save($items_key); // this is line 33
    }
}

Мне нужен memcached для работы с моим приложением Codeigniter, я пытался использовать этот пользовательский класс из github .

Как мне получить memcached, чтобы работать, у меня все настройки в application/config/memcached.php установлены правильно, но я думаю, что это не проблема.

1 Ответ

2 голосов
/ 25 июля 2011

Прежде всего убедитесь, что в PHP загружена библиотека memcached. PHP использует два типа библиотек: memcache и memcached (обратите внимание на D в конце). Для драйвера кэша Codeigniter требуется расширение memcached.

Этот драйвер довольно глючный. Во-первых, параметры по умолчанию загружаются неправильно, поэтому вам нужно создать файл config / memcached.php

Вот как выглядит мой config / memcached.php:

<?php
$config['memcached'] = array(
        'hostname'  => '127.0.0.1',
        'port'      => 11211,
        'weight'    => 1
);

В моем контроллере / модели я загружаю драйвер следующим образом:

$this->load->driver('cache', array('adapter' => 'memcached', 'backup' => 'dummy'));

Так что, если memcached недоступен, фиктивный драйвер загружается как запасной вариант.

Позаботьтесь о том, чтобы в текущей стабильной версии CodeIgniter (2.0.2) была еще одна ошибка в классе загрузчика драйверов. Вот патч Я применил

После этого исправления я получил работающий драйвер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...