ERR_CONNECTION_RESET *仅在使用ajax - CakePHP对db进行异步调用时*

时间:2014-03-28 20:17:07

标签: php sql-server ajax cakephp pdo

我正在使用CakePHP 2.4.6和PHP 5.4.16开发一个非常简单的实用程序(我的环境的完整细分如下)。该数据库是AWS上托管的旧版MS SQL数据库。我能够以这样的方式配置涉及PDO的所有内容,即应用程序成功连接到数据库并同时提取和更新记录。

我的主控制器向用户显示包含从数据库中提取的相关记录的视图。每条记录都有一个简单的关联表单,其中包含一个允许用户更新该记录的复选框。当用户勾选复选框时,我使用ajax调用单独的控制器上的方法,该控制器更新数据库中的该记录并返回结果。

这是我遇到的问题:如果我快速连续勾选一堆方框,一切正常 - 所有记录都成功更新。但是,如果我在滴答框之间暂停(10秒左右)其他每次更新都会失败 net::ERR_CONNECTION_RESETerror.log中没有记录任何内容。所以我勾选一个方框,ajax开火,记录更新;暂停;勾选另一个框,ajax触发,控制器返回错误;暂停;勾选另一个方框,ajax开火,更新记录等。

我确认错误与尝试连接数据库的应用程序有关,因为如果我从控制器方法中删除所有数据库操作并且只是将一些任意值返回给ajax调用,一切正常。我(未受过教育)的猜测是我遇到了与数据库重复/并行连接的某种问题。因此,每当尝试重复连接时,重置连接,这意味着下次尝试连接时连接成功,依此类推。我没有发布任何代码,因为我真的不知道从哪里开始尝试解决这个问题。据我所知,一切都在我的代码中工作;我不知道这是CakePHP框架本身,我的数据库配置,PDO的驱动程序设置,还是我缺少的其他问题。如果具体代码有用,请告诉我,并提前感谢您的帮助!

我的环境:

  • Windows 8
  • WampServer 2.4 x86
  • Apache 2.4.4
  • CakePHP 2.4.6
  • PHP 5.4.16
  • Microsoft Visual C ++ 2010 Redistributable Package x86
  • Microsoft SQL Server 2008 Native Client
  • Microsoft ODBC Driver 11
  • Microsoft SQLSRV驱动程序3.0(特别是php_pdo_sqlsrv_54_ts.dll)

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但不一定是AJAX调用,只是在加载页面,发送表单等...

  • Windows 10
  • XAMPP 5.6.21-0
  • PHP 5.6.21
  • CakePHP 2.8.5
  • Microsoft SQL Server 2012
  • Microsoft SQL Server Management Studio
  • Microsoft SQLSRV驱动程序3.2
  • php_pdo_sqlsrv_56_ts.dll
  • Microsoft ODBC Driver 11

编辑:问题解决了! 在app / Config / database.php中设置' persistent'为假

public $default = array(
    'datasource' => 'Database/Sqlserver',
    'persistent' => false,
    'database' => 'YOURDB',
);