在我试图从oracle8g获取数据期间,我得到了oci_connect():ORA-12170: TNS:连接超时。当我执行很少的查询时,一切都是正确的,但是如果我试图得到一些稍微多的查询,我就会被提到错误。有趣的事实是,如果我添加睡眠(1) php函数,它可以解决问题,但需要花费大量时间。
Warning: oci_connect(): ORA-12170: TNS:Connect timeout occurred in C:\apache\Apache24\htdocs\statistic\src\OracleRequest.php on line 105
Fatal error: ORA-12170: TNS:Connect timeout occurred in C:\apache\Apache24\htdocs\statistic\src\OracleRequest.php on line 108查询很简单,例如
public function getCountOfEntriesByEmployee($surname, $type_of_document)
{
$conn = oci_connect("system", "manager", $this->dsn);
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
if($type_of_document == self::TYPE_OF_DOCUMENT["COMMON_INCOME"]) {
$common_income_documents_by_employee = oci_parse($conn,
"SELECT COUNT(num_card) FROM OFFICE_DOC_IN_CARDS
WHERE DCUS_CODE = 1
and YEAR_CARD = 2020
and TYPE_CARD = " . $type_of_document . "
and DATE_IN = to_date(to_char(SYSDATE, 'yyyy-mm-dd'), 'yyyy-mm-dd')
and SHORT_CONTENT NOT LIKE '%test db%'
and (
(CONCAT(SHORT_CONTENT, SHORT_CONTENT2) like " . "'%*" . mb_convert_encoding($surname, "CP1251") . "%')
or
(CONCAT(SHORT_CONTENT, SHORT_CONTENT2) like " . "'% * " . mb_convert_encoding($surname, "CP1251") . "%')
)"
);
oci_execute($common_income_documents_by_employee);
$data = oci_fetch_row($common_income_documents_by_employee)[0];
oci_free_statement($common_income_documents_by_employee);
oci_close($conn);
return $data;非常感谢大家!
发布于 2020-10-26 21:04:42
这不是PHP问题--问题是网络缓慢或其他网络相关问题的结果。请试着用
SQLNET.INBOUND_CONNECT_TIMEOUT
SQLNET.SEND_TIMEOUT
SQLNET.RECV_TIMEOUT 内部
$ORACLE_HOME/network/admin/sqlnet.oraPHP使用的Oracle客户端
https://stackoverflow.com/questions/64536645
复制相似问题