2015-09-14 216 views
0

我有一個問題,請幫助我。 我想用php連接mssql服務器,我想設置一個15秒的時間限制。我想檢查數據庫是否可以在15秒內到達。 我試過使用下面的代碼,但不工作。 我不想通過執行php.ini文件中的服務器級別更改來執行此操作。 我想通過PHP來做到這一點。PHP,MSSql服務器連接超時

ini_set('mssql.connect_timeout',15); 
connection = mssql_connect($_POST['DB_HOST'],$_POST['DB_USER'],$_POST['DB_PASS']); 
if(!$connection) { 
    throw new Exception('Unable to connect database'); 
} else { 
    $database = mssql_select_db($_POST['DB_NAME'], $connection); 
    if(!$database) { 
     throw new Exception('Unable to select database'); 
    } else { 
     echo "Connected"; 
    } 
} 
+0

看到: 參數或者set_time_limit(0); ini_set('mysql.connect_timeout','0'); ini_set('max_execution_time','0'); –

回答

1

while set_time_limit(),sleep()的持續時間在執行時間內將被忽略。下面舉例說明:

<?php 
echo '<html><body>'; 
set_time_limit(1); 
$i = 0; 
while($i++ < 100000001){ 
     if($i % 100000 == 0){ 
       echo $i/100000, "<br/>\n"; 
     } 
} 
echo "done.<br/>\n"; 

// will not echo 'done.'. 
?> 

需要更多的信息請看這裏: - http://php.net/manual/en/function.set-time-limit.php

+0

親愛的Arunendra,你沒有明白我的觀點,實際上我只是想在15秒內檢查我的數據庫是否可以訪問 – Ankur

0

您可以在一個PHP文件用來初始化本地設置。 您可以設置像max_execution_time,default_socket_timeout,memory_limit,mysql.connect_timeout,user_ini.cache_ttl,display_errors和log_errors 這樣的值,它總是很好用error_reporting檢查PHP文件中的錯誤。

以下是設置ini_set值的示例腳本。

如果你不想每次都在PHP腳本中設置,只需在你的服務器/機器上設置php.ini文件中的值即可。

<?php 
ini_set('max_execution_time', 6000); 
ini_set("default_socket_timeout", 6000); 
ini_set('memory_limit','256M'); 
ini_set('mysql.connect_timeout', 6000); 
ini_set('user_ini.cache_ttl', 6000); 
ini_set('display_errors',0);  
ini_set('log_errors',1);  
error_reporting(E_ALL);  
//phpinfo(); 
+0

親愛的Navnish,我在上面的代碼中做了同樣的工作,但它不工作 – Ankur