我有一个使用odbc连接的旧站点。由于某种原因,查询现在失败了。
我创建了一个测试页面,该页面调用了我一直在使用的相同数据库连接脚本:
<?php
$db_host = "MAINHOST";
$db_user = "MAINUSER";
$db_pass = "MAINPASS";
$db_odbc = "MAINDB";
$connect = odbc_connect($db_odbc, $db_user, $db_pass) or die ("Could not connect to Oracle");
?>
我可以测试此页面并确认确实存在良好的连接。
这是一个示例查询:
<?php
include("include/database.php");
if($connect) // just added this. figured I'd make sure the connection is good before proceeding
{
$queryMain = "SELECT a_bunch_of_records FROM a_table WHERE a_bunch_of_where_clauses";
$resultMain = odbc_exec($connect, $queryMain);
if($resultMain)
{
echo "query successful";
}
else
{
echo "query failed " . odbc_error();
}
}
else
{
echo "no connection";
}
?>
我最初在Chrome控制台中遇到500错误,然后才将其移至测试页。现在,我收到“此页面无法正常工作”的错误。它不会吐出odbc_error。
我可以回显查询并在PL / SQL窗口中运行它,它成功返回数据。
有人可以看到问题吗?我不确定服务器本身是否有问题。我很困惑。
*更新*
我注意到有时查询运行,有时却没有。也许与服务器的连接不稳定。不确定。
答案 0 :(得分:1)
由于日志文件表明已超出最大执行时间,请考虑以下几种选择:
优化Oracle SQL查询以使其比默认的30秒运行速度快,这可能涉及:
EXPLAIN PLAN FOR SELECT ...
调查query execution plan WHERE
子句中的字段进行扫描在代码执行期间临时扩展默认PHP设置:
ini_set('max_execution_time', <SOME NUMBER>);
永久扩展php.ini文件中的全局PHP设置(然后重新启动服务器以传播更改):
max_execution_time = <SOME NUMBER>