【问题标题】:How can I stop caching of Oracle Select statement in PHP?如何在 PHP 中停止缓存 Oracle Select 语句?
【发布时间】: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 页?

标签: php oracle caching


【解决方案1】:

抱歉,我认为数据库不会因为缓存而提供错误的结果。 documentation 表示以下内容

“当用户重复执行查询和函数时,数据库会从缓存中检索行,从而减少响应时间。当依赖数据库对象中的数据被修改时,缓存的结果将变得无效。”

所以我建议你要么检查数据是否真的更新了,要么在另一个应用层上寻找缓存的结果。

再次抱歉,没有帮助回答

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    相关资源
    最近更新 更多