Php SQLSRV查询超时或登录超时

Php SQLSRV查询超时或登录超时,php,sql-server,apache,codeigniter,Php,Sql Server,Apache,Codeigniter,我正在使用Codeigniter 3.1并连接到远程mssql数据库。但有时mssql connect需要很长时间,我想设置查询超时或mssql connect登录超时。但似乎对我不起作用。 我可能错过了什么 我的连接配置 try{ $dsn ="sqlsrv:Server=IP,Port;Database=DB;"; $db = new PDO($dsn, "username", "password"); //$db->setAttribute(PDO::SQLSRV_AT

我正在使用Codeigniter 3.1并连接到远程mssql数据库。但有时mssql connect需要很长时间,我想设置查询超时或mssql connect登录超时。但似乎对我不起作用。 我可能错过了什么

我的连接配置

try{
  $dsn ="sqlsrv:Server=IP,Port;Database=DB;";
  $db  = new PDO($dsn, "username", "password");

 //$db->setAttribute(PDO::SQLSRV_ATTR_QUERY_TIMEOUT, 3);
 //$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION );

  $query=('select * from Accounting');

  $cmd = $db->prepare($query,array(PDO::SQLSRV_ATTR_QUERY_TIMEOUT => 1 ));

  if(!$cmd->execute()){
    throw new PDOException ($cmd->errorInfo());
  }
  return $cmd->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $e) {
  die("Error connecting to SQL Server: " . $e->getMessage());
}
编辑:我正在使用这个驱动器;

我创建了一个向db发送查询的循环

Name    Status  Type    Size        Time       Respose
test    200      xhr    10.5kb     400ms       working well
test    200      xhr    10.5kb     400ms       working well
test    200      xhr    608kb      1.16ms      login time out
test    200      xhr    10.5kb     400ms       working well
test    200      xhr    10.5kb     400ms       working well
test    200      xhr    618kb      39.45s      gives TCP error
test    200      xhr    10.5kb     400ms       working well
test    200      xhr    10.5kb     400ms       working well

第一次登录超时工作,但第二次不工作

您可以在连接时设置超时,而不是在查询时设置超时。可以在连接字符串中设置超时:

$dsn = "sqlsrv:Server=IP,Port;Database=DB;Connect Timeout=30";

您可以在连接时设置超时,而不是在查询时设置超时。可以在连接字符串中设置超时:

$dsn = "sqlsrv:Server=IP,Port;Database=DB;Connect Timeout=30";

在DSN字符串中指定了无效的关键字“连接超时”。属性中的属性在DSN字符串中指定了无效的关键字“连接超时”。您的脚本中的属性似乎正确,但这些链接可能会为您提供更多信息:@Zhorov感谢您的回答,我查看了一下,它似乎只支持mssql 2014及以上版本,但我使用sql版本2008(SP2)。您的脚本似乎正确,但这些链接可能会给您提供更多信息。@Zhorov谢谢您的回答,我看了一下,它似乎只支持mssql 2014及以上版本,但我使用sql版本2008(SP2)