小编Mil*_*ach的帖子

php websocket棘轮不从学说中获取最新数据

我刚刚在使用 Symfony 4.1 和https://github.com/GeniusesOfSymfony/WebSocketBundle(它建立在 PHP Ratchet 上)构建的WebSocket 应用程序中发现了一个非常有趣的事实。

我想定期从 MySQL 数据库中获取最新数据用于测试目的,$repository->find(2);但它总是返回相同的结果,即使我在订阅 WebSocket 通道时更改数据。

经过相当多的时间弄乱代码并哭泣之后,我发现由于某种原因,Doctrine 正在缓存结果(或者我认为它就是这样做的)。

为了测试我的理论,我创建了一个服务,使用以下代码处理从数据库中获取数据:

/**
 * @return mixed
 * @throws \Doctrine\DBAL\DBALException
 */
public function fetchNewest()
{
    $stmt = $this->em->getConnection()->prepare('SELECT * FROM test WHERE id=2');
    $stmt->execute();

    return $stmt->fetch();
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这奏效了。谁能解释为什么find(2)方法没有产生最新的数据,而原始 SQL 却产生了?

php doctrine websocket symfony ratchet

1
推荐指数
1
解决办法
564
查看次数

标签 统计

doctrine ×1

php ×1

ratchet ×1

symfony ×1

websocket ×1