0

codeigniter でファイル ベースのキャッシュを使用しています。セットのキャッシュは正常に実行されますが、クリーニングに失敗します。

コード

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

class Tm extends CI_Controller {

public function index(){

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

    if ($foo = $this->cache->file->get('foo2'))
        echo $foo.'<br />';
    else
        {
        echo 'Saving to the cache!<br />';
        $foo = 'foobarbaz! :D';
        $this->cache->file->save('foo2', $foo, 60);
        }
    if($this->cache->clean())
        echo "clearing cache ";
    else
        echo "Error clearing cache ";
    }
    
} 

最初の出力:

キャッシュに保存!

キャッシュのクリア

リフレッシュしたら

フーバーバズ!:D

キャッシュのクリア

失敗した場合でも、関数は常にtrue$this->cache->clean()を返すようです

4

1 に答える 1

0

私自身の最後のコメントを編集しているときに、私はあなたとまったく同じ過ちを犯したことに気付きました-電話->fileに出られませんでした.clear()

Cache クラスのデフォルトのアダプターは「ダミー」で、新しいものを初期化子に渡さなかったので、呼び出しはの代わりに$this->cache->clear()呼び出しを試みます。$this->cache->dummy->clear()$this->cache->file->clear()

$this->cache->file->clear()ライブラリをロードするときに、明示的に呼び出すか、これを行う必要があります。

$this->load->library('cache', array('adapter' => 'file'));

編集:

CI_Cache_fileキャッシュ パス内の一部またはすべてのファイルを削除できない場合でも TRUE を返します。delete_files()の戻り値をチェックしないファイル ヘルパーを呼び出すだけですunlink()。データベースにあるようなファイル削除のトランザクションがないため、これを回避することはできません。

于 2012-11-19T14:45:34.977 に答える