我有一些理论上的问题:我正在设计自己的CMS /应用程序框架(就像许多PHP程序员以前做过的那样,并且总是会这样做),以便制作可用于生产的解决方案或开发稍后使用的各种模块/插件。重用MySQL结果
无论如何,我想从整个应用程序收集SQL连接,然后在一个地方运行它们:
index.php:
<?php
include ('latestposts.php');
include ('sidebar.php');
?>
latestposts.php:
<?php
function gather_data ($arg){ $sql= ""; }
function draw ($data) {...}
?>
sidebar.php:
<?php
function gather_data ($arg){ $sql= ""; }
function draw ($data) {...}
?>
现在,当整个模块系统的应用尚未将要想通,它的想法已经漂浮在我脑海中的某个地方了。但是,我想,如果我能够首先加载所有gather_data
函数,然后运行sql,然后运行draw
函数 - 并且如果我能够重用结果!
如果,例如,$sql
是SELECT * FROM POSTS LIMIT 10
和$sql2
为SELECT * FROM POSTS LIMIT 5
,是可以编程PHP看到:“嗯,这是相同的SQL,我就调用它一次,并重新使用前5行”?
或者是否有可能将此行为添加到某些DRM?
但是,正如标签所说,这仍然只是一个正在进行的想法。如果它证明很容易完成,那么我会发布更多的问题如何:)
所以,基本上:是否有可能,是否有意义?如果两者都是,那么......任何想法如何?
我有一个应用程序有可能产生几个类似的请求。所有的数据库交互都通过数据库对象隔离,而对象本身(对应用程序的其余部分保持沉默)具有非常基本的缓存系统;基本上,某些非易失性函数检查以前是否使用相同的参数调用它们,如果是,则返回存储在数组中的结果。它的执行时间少于几百分之一秒,但如果缓存命中而不是数据库,它可以节省1-2个数量级的时间。食物的思想。 – Dereleased 2010-02-02 21:25:15
如果你在某些情况下看到了这种类型的回报,那么它可能是适当的 - 已经有不止几次,我已经存储了mysql查询集,它们在服务器上的gzipped平面文件中保持静态以便检索,而不是通过MySQL(像不翻译的语言翻译之类的东西)。 我的主要担心是多用户交互,导致您的数据在使用停滞缓存时变得无关紧要。但是,在正确的情况下,尽可能做你正在谈论的事情 - 总的来说,你会获得足够的资金来应对麻烦吗? – Shane 2010-02-03 02:28:02