注意:apc_fetch():序列化数据的意外结束

时间:2014-06-12 10:09:58

标签: php symfony apc

我要暂停一个论坛的类别列表。

我有这个错误:ContextErrorException: Notice: apc_fetch(): Unexpected end of serialized data in C:\wamp\www\project\vendor\doctrine\cache\lib\Doctrine\Common\Cache\ApcCache.php line 40

控制器:

<?php
namespace Acme\ForumBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Doctrine\Common\Cache\ApcCache;

class DefaultController extends Controller
{
    public function sidebarAction($slug = null)
    {
        $cache = new ApcCache;

        if($cache->contains('ListOfCategories')) {
            $categories = $cache->fetch('ListOfCategories');
        } else {
            $categories = $this->getDoctrine()
                                ->getManager()
                                ->getRepository('AcmeForumBundle:Category')
                                ->getCategories();
            $cache->save('ListOfCategories', $categories, 500);
        }

        return $this->render('AcmeForumBundle:Block:sidebar.html.twig', array(
            'slug'       => $slug,
            'categories' => $categories
        ));
    }
}

我的config.yml:

# Doctrine Configuration
doctrine:
    dbal:
        driver:   "%database_driver%"
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
        # if using pdo_sqlite as your database driver, add the path in parameters.yml
        # e.g. database_path: "%kernel.root_dir%/data/data.db3"
        # path:     "%database_path%"

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        auto_mapping: true
        query_cache_driver:    apc
        metadata_cache_driver: apc

对于这一行:metadata_cache_driver: apc我不确定是否需要。

我的APC配置:

[APC]
apc.enabled = 1
apc.shm_size = 256M
apc.max_file_size = 5M
apc.stat = 1

我做错了什么?

PS:正确安装了APC,phpinfo();确认

由于

1 个答案:

答案 0 :(得分:0)

我找到了另一种方式:

config.yml

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    auto_mapping: true
    metadata_cache_driver: apc
    result_cache_driver: apc
    query_cache_driver: apc

存储库:

<?php

namespace xxxxxx\ForumBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * CategoryRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class CategoryRepository extends EntityRepository
{
    public function getCategories() {

        $q = $this->createQueryBuilder('c')
                  ->orderBy('c.weight', 'ASC');

        $query = $q->getQuery();

        $query->useResultCache(true, 300, 'list_of_categories');

        return $query->getResult();
    }
}

并删除所有&#34; apc line&#34;在控制器中