php Symfony:清除教义缓存

mrphzbgm  于 2023-08-02  发布在  PHP
关注(0)|答案(7)|浏览(146)

我需要清除Symfony中的doctrine's缓存。
命令行中必须有某种方法来 * 清除该高速缓存 *。
或者我应该在哪里找到并删除属于缓存的文件?

eblbsuwk

eblbsuwk1#

对于Symfony 3+:

php bin/console

字符串
将列出所有命令,以下命令与缓存相关:

php bin/console doctrine:cache:clear-metadata 
 php bin/console doctrine:cache:clear-query  
 php bin/console doctrine:cache:clear-result


在Symfony 3之前:

app/console


我会列出你该怎么做

app/console doctrine:cache:clear-metadata 
 app/console doctrine:cache:clear-query  
 app/console doctrine:cache:clear-result

kxeu7u2r

kxeu7u2r2#

如果你想在你的代码中做这件事(来自Doctrine的文档):
如果你只是想删除所有的缓存条目,你可以用deleteAll()方法来完成。

$cacheDriver = new \Doctrine\Common\Cache\ArrayCache();
$deleted = $cacheDriver->deleteAll();

字符串

6qqygrtg

6qqygrtg3#

我想我对教义结果缓存快疯了--最后我不得不重新启动memcached。

i86rm4rw

i86rm4rw4#

如果您使用APC,您也可以只调用代码

<?php
$deleted = apc_clear_cache() && apc_clear_cache('user');

字符串
在同一个服务器上的PHP页面。这就是Antho的答案中的deleteAll()方法所做的,但您不依赖于Doctrine类。顺便说一句:整个缓存将被刷新--以防你把它用于非教义的东西。

hs1ihplo

hs1ihplo5#

我知道这篇文章的标题是Symfony 2,但对于那些来自谷歌的人来说,如果你有Symfony 3+,它会是:

bin/console

字符串
相对于:

app/console

r6hnlfcb

r6hnlfcb6#

也许有点晚了,但在我的例子中,doctrine没有在生产中生成代理类,因此我将auto_generate_proxy_classes更改为true:

#symfony2&3 app/config/config.yml
#symfony4 config/packages/doctrine.yaml (by default true since 4.2)

doctrine:
    orm:
        auto_generate_proxy_classes: true #"%kernel.debug%"

字符串

g0czyy6m

g0czyy6m7#

也许有人在搜索
Symfony 6.2+

public function __construct(..., private KernelInterface $kernel

字符串
还有

$this->kernel->shutdown(); //RESET ALL


您正在运行多个实体,并且您管理了与会话的连接

/** @var SiteService $siteService */
$siteService = $this->container->get(SiteService::class);
/** @var Site[] $sites */
$sites = $siteService->repository->getByInstalledSites();

foreach ($sites as $site) {
    dump('Domain:'. $site->getDomain());
    $session = new Session();
    $session->set('db_user', $site->getUser());
    $session->set('db_password', $this->getDecryptPassword($site->getPassword()));
    $session->set('db_name', $site->getDatabaseName())
    
    $user = $this->userService->getById(1);

    dump($user);
    //what you want to do ...

    $this->kernel->shutdown(); //RESET ALL CONNECTIONS
}

相关问题