Memcache не хранит свойства объекта

#php #caching #memcached

#php #кэширование #memcached

Вопрос:

У меня есть:

 //$this->MC->flush();
    $branchesWCounts = array();
    if (!$branchesWCounts = $this->MC->get('BRANCH_JOB_COUNT')) {
        foreach ($branches as $branch) {
            $branch->lt30min = $this->jobsAgeLessThan(1800, $branch->id);
            $branch->gt30min = $this->jobs30to120($branch->id);
            $branch->gt2hour = $this->jobs120Plus($branch->id);
            $branch->problems = $this->problemJobCount($branch->id);
            $branchesWCounts[] = $branch;
        }
        $this->MC->set('BRANCH_JOB_COUNT', $branchesWCounts);
    }
  

Который работает, когда кэша там нет, и такие вещи, как ‘lt30min’, выводятся правильно на моей странице.

Но после кэширования кажется, что он не может быть извлечен и, похоже, вообще не существует в кэше.

кто-нибудь может сказать мне, почему это происходит?

Ответ №1:

Memcache не будет хранить массив PHP. Вам нужно сохранить его в виде строки. Используйте serialize() .

 $this->MC->set('BRANCH_JOB_COUNT', serialize($branchesWCounts));
  

Затем вы должны получить его из Memcache unserialize() .