Why is that the SQL Server PHP Driver has problms with long running queries?
Every time I have a query that takes a while to run, I get the following errors from sqlsrv_errors() in the below order:
Shared Memory failure, Communication
Link Failure, Timeout failure
But if I try the same query with SQLCMD.exe it comes back fine. Does the PHP SQL Server Driver have somewhere that a no timeout can be set?
Whats the difference between running queries via SQLCMD and PHP Driver?
Thanks all for any help
Typical usage of the PHP Driver to run a query.
function already_exists(){
$model_name = trim($_GET['name']);
include('../includes/db-connect.php');
$connectionInfo = array('Database' => $monitor_name);
$conn = sqlsrv_connect($serverName, $connectionInfo);
$tsql = "SELECT model_name FROM slr WHERE model_name = '".$model_name."'";
$queryResult = sqlsrv_query($conn, $tsql);
if($queryResult != false){
$rows = sqlsrv_has_rows($queryResult);
if ($rows === true){
return true;
}else{
return false;
}
}else{
return false;
}
sqlsrv_close($conn);
}
SQLCMD has no query execution timeout by default. PHP does. I assume you’re using
mssql_query? If so, the default timeout for queries through this API is 60 seconds. You can override it by modifying the configuration propertymssql.timeout.See more on the configuration of the MSSQL driver in the PHP manual.
If you’re not using mssql_query, can you give more details on exactly how you’re querying SQL Server?
Edit [based on comment]
Are you using
sqlsrv_querythen? Looking at the documentation this should wait indefinately, however you can override it. How long is it waiting before it seems to timeout? You might want to time it and see if it’s consistent. If not, can you provide a code snippet (edit your question) to show how you’re using the driver.If MSDTC is getting involved (and I don’t know how you can ascertain this), then there’s a 60-second timeout on that by default. This is configured in the Component Services administration tool and lives in a different place dependent on version of Windows.