AuS*_*ike 5 php oracle-call-interface laravel lumen
我们使用 Lumen 5.2.x (Laravel) 应用程序从 Oracle 数据库获取数据。出于这个原因,我们使用oci_connect()连接到数据库。(额外信息:我们使用 Oracle instantclient)
由于未知原因,应用程序没有响应并且不会返回任何数据。经过几个小时的调试,我们发现它陷入了同样的方法:oci_connect(). 显然该函数没有返回“超时”消息或类似的消息。
后来好像数据库移到了另一台主机上,这就是无法连接的原因。然而,我们预计会出现错误,而不是等待大量的时间。
这就是我们试图强制设置暂停的原因,但到目前为止还没有成功。
我们尝试过的事情:
将其添加到连接字符串:(CONNECT_TIMEOUT=10)(RETRY_COUNT=3)完全被忽略。
设置max_execution_time和set_time_limit1
添加一个sqlnet.orawith 设置:
TCP.CONNECT_TIMEOUT=10
SQLNET.INBOUND_CONNECT_TIMEOUT=10
SQLNET.OUTBOUND_CONNECT_TIMEOUT=10
Run Code Online (Sandbox Code Playgroud)
我们尝试的一切都失败了,有人知道如何解决这个错误吗?任何帮助表示赞赏!
编辑:系统信息:Windows Server 2012 R2、IIS 8、PHP 5.6
您已经尝试了几种方法,这很棒。这max_execution_time是一个很好的。您可以注册一个关闭功能,以便您可以记录错误(如果有) - 或者执行您需要的任何操作。
<?php
function shutdown(){
$error=error_get_last();
if(is_null($error))
echo "No errors"; //or do nothing
else
print_r($a); //or log it properly
}
register_shutdown_function('shutdown');
ini_set('max_execution_time',3 );//max 3 seconds
sleep(5); //just for test it out
Run Code Online (Sandbox Code Playgroud)
无论如何,根据网上的说法(例如:“不要失去理智,转向 Linux” ),如果可能的话,在使用 Oracle 连接时,您应该尝试使用 Linux 来运行您的 Web 服务器。
(我知道,在某些时候,Linux 和 Windows 用户之间存在很大的分歧。但如果操作系统更适合某些用例,为什么还要使用另一个呢)
| 归档时间: |
|
| 查看次数: |
2567 次 |
| 最近记录: |