【发布时间】:2020-01-21 22:38:40
【问题描述】:
我在 PHP 中有一个基本的 SQL 选择语句,我将它传递给一个 oracle 服务器。
$queryString = "
SELECT /*+ NOCACHE */
company,
addr1,
addr2,
addr3,
city,
state,
country,
zip,
custno CUSTOMERNUMBER,
prime_contact PRIMECONTACT,
prime_contact_email PRIMEEMAIL,
phone_number PRIMEPHONE,
ext PRIMEEXTN,
fax_number PRIMEFAX,
ID
FROM
IQMS.ARCUSTO
WHERE
ID=" . $ID;
$stid = oci_parse($OracleConnection, $queryString);
oci_execute($stid);
$row = oci_fetch_array($stid, OCI_ASSOC);
oci_free_statement($stid);
oci_close($OracleConnection);
当我执行查询 n- 时,如果我将它单独留在应用程序中一段时间,它将提取最新的更改。如果我经常运行该应用程序,它似乎会缓存查询,即使查询中没有缓存提示。
我无法真正刷新服务器上的缓存,因为我们处于生产环境中,并且真的不想减慢使用数据的其他应用程序的速度。
如何让我的查询在每 5 分钟运行一次时返回更改后的结果?
【问题讨论】:
-
附注:使用
"... ID=" . $ID是一个安全漏洞,会影响可扩展性。您必须使用绑定变量(检查所有文档,示例etc)。您是否真的启用了结果缓存 - 我刚刚链接到的文档上的第 176 页?