2015-09-14 217 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