我遇到了这样一种情况:我们有两个生产数据库彼此同步。服务器1被认为是主要的。有时由于维护或灾难服务器两个将成为主要的。
所以我不得不手动编辑这个愚蠢的配置文件。
我问可能有什么不同,我被告知“昨天数据库坏了,但服务器坏了。今天服务器坏了。“好吧…”。。。?但我看不出有什么区别。如果oci\ U connect无法与服务器建立任何类型的通信,我希望它返回false。我希望它会超时并出错。当它从服务器接收到错误代码时不只是传递它。例如,如果有网络问题怎么办?
如果这是一种“错误”,有没有什么方法可以让我先检查服务器是否启动了?像平(当然,当我通过命令提示符ping时,我从serverone得到了一个响应,然后被告知“它现在回来了”,尽管我对此时间持怀疑态度。)
不管怎样,如果有人能解释为什么oci\U connect可以无休止地运行而不失败,以及如何防止它这样做,我将不胜感激。
$count = count($servers);
for($i = 0; $i < $count; $i++){
if((!isset($connection)) || ($connection == false)){
// Attempt to connect to the oracle database
$connection = @oci_connect($servers[$i]["user"], $servers[$i]["pass"], $servers[$i]["conid"]) or ($conn_error = oracle_error());
// Try again if there was a failure
if(($connection == false) || (isset($con_error))){
// Three (two more) tries per alternative
for($j = $st; $j < $fn; $j++){
// Try again to connect
$connection = @oci_connect($servers[$i]["user"], $servers[$i]["pass"], $servers[$i]["conid"]) or ($conn_error = oracle_error());
} // for($j = 2; $j < 4; $j++)
} // if($connection == false)
} // if(!isset($connection) || ($connection == false))
} // for($i = 0; $i < $count; $i++)