[英]Using PHP to pull data from Access Database PHP Warning: odbc_fetch_array(): 4 is not a valid ODBC result resource in EditRecord.php on line 91
[英]Slow response from SQL Azure database using odbc_fetch_array in PHP
我在Azure中有一個數據庫。 當我運行通過SMSS返回300條記錄的查詢時,我很快就會得到結果。 但是,當我嘗試使用php中的odbc_fetch_array獲得結果時,響應時間很慢(15-20秒)。 如果我將結果集限制為幾個記錄(在php中),則響應很快。 如何減少延遲?
這是我的代碼:
//CONNECTIONS *************************************************
try {
$connect = odbc_connect(odbcname,'user','password');
$result = odbc_exec($connect,$sql);
$applicants = array();
//slow response in while loop below
while( $row = odbc_fetch_array($result) ) {
array_push($applicants,$row);
}
$err = (odbc_error() ? odbc_errormsg($connect) : '');
odbc_close($connect);
} catch (Exception $e) {
die();
}
Web服務器是Windows Server 2008 R2數據中心。 odbc驅動程序是“ SQL Server ODBC驅動程序11”。
您可以嘗試設置連接以使用ODBC_CURSOR
//CONNECTIONS *************************************************
try {
$connect = odbc_connect(odbcname,'user','password', SQL_CUR_USE_ODBC); //<--------
$result = odbc_exec($connect,$sql);
$applicants = array();
//slow response in while loop below
while( $row = odbc_fetch_array($result) ) {
array_push($applicants,$row);
}
$err = (odbc_error() ? odbc_errormsg($connect) : '');
odbc_close($connect);
} catch (Exception $e) {
die();
}
然而,微軟推薦的方法從PHP訪問SQL數據庫是使用PHP的微軟驅動程序提供的SQL Server 在這里
這里有一些由Microsoft示例(未經測試的示例)連接到Azure SQL Server。
$server = "tcp:<value of SERVER from section above>";
$user = "<value of USERNAME from section above>"@SERVER_ID;
$pwd = "password";
$db = "testdb";
$conn = sqlsrv_connect($server, array("UID"=>$user, "PWD"=>$pwd, "Database"=>$db));
if($conn === false){
die(print_r(sqlsrv_errors()));
}
$tsql = "SELECT * FROM PRODUCTS WHERE ID > ?";
$cursorType = array("Scrollable" => SQLSRV_CURSOR_KEYSET);
$params = array(1)
$getProducts = sqlsrv_query($conn, $tsql, $params, $cursorType);
if ( $getProducts === false)
die( FormatErrors( sqlsrv_errors() ) );
if(sqlsrv_has_rows($getProducts))
{
while( $row = sqlsrv_fetch_array( $getProducts, SQLSRV_FETCH_ASSOC))
{
//ADD CODE HERE
}
}
/* Free the statement and connection resources. */
sqlsrv_free_stmt( $getProducts );
sqlsrv_close( $conn );
Azure上的網站,你可以找到關於如何使用PHP連接到SQL Server一步一步的教程, 看這里
在這里,您可以找到有關用於SQL Server 鏈接的 PHP Microsoft驅動程序的文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.