0

希望有人能让我看起来很傻。这个问题困扰着我。我一直在本地 WAMP 堆栈上开发 Web 应用程序。我一直在使用 sqlsrv PDO 驱动程序,一切都很好。我将我的应用程序发布到使用 PDO dblib 驱动程序的 Ubuntu 10.04 服务器。该网站的大部分工作,但我有一个查询,如果结果集被缓冲,将只返回一条记录。如果没有缓冲,则不会出现结果。如果我使用 PDO 运行查询,它可以工作。如果我使用 Zend TableGateway 查询结果不存在。有什么想法吗?第一个图像是记录的工作显示,第二个是 \Zend\Debug\Debug::dump() 的问题。

工作展示

无法使用 \Zend\Debug\Debug::dump() 显示

更新:我确定问题是我正在查询控制器中的表并将其发送到视图,但在视图中我有一个视图助手访问同一个表。似乎 dblib 驱动程序没有适当地处理异步调用,并且视图助手正在切断控制器的查询。关于数据库/服务器配置修复的任何想法?如果不是,我想我可以重新编码实现。

4

1 回答 1

0

正在使用的 FreeTDS 驱动程序不是线程安全的。为了解决这个问题,每个返回的 resultSet 都会立即输入到本地数组中:

$resultSet = $this -> tableGateway -> selectWith ( $select );

$results = array();

foreach($resultSet as $r)
{
    $results[] = $r;
}

return $results;

这可以防止数据库连接相互干扰。

于 2014-05-02T16:43:47.150 回答