我有一些理論上的問題:我正在設計自己的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