Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Doctrine2结果缓存id_Php_Caching_Doctrine Orm - Fatal编程技术网

Php Doctrine2结果缓存id

Php Doctrine2结果缓存id,php,caching,doctrine-orm,Php,Caching,Doctrine Orm,我第一次在一个项目上实现Doctrine2结果缓存,我做了一些测试,但是我仍然对设置缓存id有一些疑问 假设我有这样一个查询: $qb->select('o.img,o.title,o.comment') ->from('MyBundle:Object', 'o') ->where('o.id = :id') ->setParameter('id', $id); $result = $qb->getQuery() -&g

我第一次在一个项目上实现Doctrine2结果缓存,我做了一些测试,但是我仍然对设置缓存id有一些疑问

假设我有这样一个查询:

$qb->select('o.img,o.title,o.comment')
   ->from('MyBundle:Object', 'o')
   ->where('o.id = :id')
   ->setParameter('id', $id);

$result = $qb->getQuery()
             ->getScalarResult();
我有一个不断变化的参数(
id
):哪个代码可以正确缓存结果(如果结果缓存使用参数自动管理查询,则为idk)

第一:(我想是这个)

第二:

$result = $qb->getQuery()
             ->useResultCache(true,1800,'my_object')
             ->getScalarResult();

提前谢谢:-)

实际上这两种方法都应该有效。但是,区别在于用于标识存储在缓存中的数据的名称

每个缓存的值都将具有以下结构:

array(
    "raw sql with parameters",
    array(
        "result 1",
        "result 2",
        "result 3",
    ),
);
那么

选项1:将缓存应用程序中加载的第一个
MyBundle:Object
对象的sql和数据。因此,如果第二个对象选择具有不同的id,则条令将返回先前缓存的对象

如果要缓存在每个请求中都不会更改的对象,可以使用以下代码。一些示例:网页、记录的用户信息、计数器等

选项2:将根据其id缓存每个
MyBundle:Object
的sql和数据。如果要加载分离的对象,可以使用此代码。一些例子:一个特殊的MyBundle:对象、特定的图像、特定的电子邮件等

array(
    "raw sql with parameters",
    array(
        "result 1",
        "result 2",
        "result 3",
    ),
);