Как использовать папку с несколькими кэшами в CodeIgniter - PullRequest
0 голосов
/ 09 июня 2018

У меня есть многоязычный веб-сайт. Я хочу создать отдельную папку кеша для каждого языка.Как я могу это сделать?В настоящее время я использую одну папку кэша с этим кодом.

Можете ли вы мне помочь?

$lang = $CI->session->userdata('language');
$cache_path .= md5($uri).'-'.$lang;

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Нахожу решение.мы должны отредактировать output.php в основной папке следующим образом.

        public function _write_cache($output){
            $CI =& get_instance();
            $lang = $CI->session->userdata('language');
            $path = $CI->config->item('cache_path');
            $cache_path = ($path === '') ? APPPATH.'cache_'.$lang.'/' : $path;
            //other code
        }
        public function _display_cache(&$CFG, &$URI){
            $CI =& get_instance();
            $lang = $CI->session->userdata('language');
            $cache_path = ($CFG->item('cache_path') === '') ? APPPATH.'cache_'.$lang.'/' : $CFG->item('cache_path');
            //other code
        }
0 голосов
/ 09 июня 2018

параметр, который настраивает папку кэша, находится в config.php и называется cache_path.Для изменения во время выполнения мы можем использовать функцию $this->config->set_item.Очевидно, что переключение папки кэша должно быть сделано как можно раньше в функции контроллера, до вызова функции кэширования.

Вот пример реализации, контроллер Test:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Test extends CI_Controller {

    /**
     * Index Page for this controller.
     *
     * Maps to the following URL
     *      http://example.com/index.php/welcome
     *  - or -
     *      http://example.com/index.php/welcome/index
     *  - or -
     * Since this controller is set as the default controller in
     * config/routes.php, it's displayed at http://example.com/
     *
     * So any other public methods not prefixed with an underscore will
     * map to /index.php/welcome/<method_name>
     * @see https://codeigniter.com/user_guide/general/urls.html
     */
    public function index()
    {
        $user_language = 'french';

        $this->config->set_item('cache_path', 'IS_ROOT/cache/' . $user_language . '/');

        $this->output->cache(1);

        $this->load->view('welcome_message');
    }
}

когда вы запускаете его, вы можете увидеть в журналах, что использовался каталог "french" в "глобальном" IS_ROOT / cache:

INFO - 2018-06-09 22:12:39 --> File loaded: /php_basedir/CodeIgniter_3_1_8/application/views/welcome_message.php
DEBUG - 2018-06-09 22:12:39 --> Cache file written: IS_ROOT/cache/french/bc3ad60292ed776397da07cac67ddd28
INFO - 2018-06-09 22:12:39 --> Final output sent to browser
DEBUG - 2018-06-09 22:12:39 --> Total execution time: 0.0138

надеюсь, это поможет

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