2011-10-19 123 views
0

我有一個數組當前使用URL參數進行分頁(例如.... php?page = 2 & blah = blop & glob = gloo)。如何高效地分頁PHP數組?

目前,每次頁面加載時,都會從查詢引擎中下載一個XML文件,並進行解析,然後將我想要使用的對象數組拉出來。

我該如何設置,這樣我就不必重新加載頁面,只需要從XML文件讀取一次?

我對PHP很新,所以請耐心等待。經過一些研究後,我認爲Ajax適合於此?如果我錯了,請糾正我。我試圖找出一些與Ajax分頁的東西,但我發現的最有用的東西是用於分頁來自mysql數據庫的數據,而不是用於數組對象。

任何人都可以提供任何指針?我渴望學習。

+0

除非您使用某種內存緩存(memcached),否則每次需要更多數據時,您都必須閱讀xml文件(或其某些本地存儲的版本)。服務器<-> xml通訊時間或瀏覽器<->服務器通訊時間? – Nicole

+0

我最大的擔心是在一頁上進行分頁而沒有頁面加載。這是一個移動應用程序,所以我希望界面儘可能精簡! – nmford

回答

3

當我需要這個時,我創建一個緩存函數,A)從原始源加載XML,然後將其保存到緩存文件夾,或B)如果緩存文件夾存在,則將其從緩存文件夾加載, (如新鮮度)得到滿足。

在一個不得不從一臺相當慢的服務器上檢索數據的網站上,我把A)放到一個cron作業中,並且總是從網站的緩存中讀取數據。

如果需要大量的數據分頁,這裏有一個很好的例子:http://net.tutsplus.com/tutorials/php/how-to-paginate-data-with-php/

+0

感謝關於緩存馬特的提示。 XML源將很少改變,所以這是一個好主意。 關於分頁,我已經編寫了自己的PHP分頁,但我想擺脫頁​​面加載,我該怎麼做? – nmford

+0

Matt H正在描述一個文件緩存。基本上,只有在file_exists('cache to file'路徑')失敗時,才執行'file_get_contents('to XML')。否則,你'file_get_contents('緩存文件的路徑')'。 –

+0

如果您想完全擺脫頁面加載,請使用@imkingdavid下面的答案(AJAX)。您可以通過AJAX查詢加載每個頁面,或將所有數據一次加載到JSON數組中,並在請求時構建頁面視圖。如果您的數據量有限,那麼JSON是可以的,否則一次使用幾個頁面的AJAX加載組合,並保存在JSON對象中。 –

1

您可以調整您找到的與數據庫一起使用的AJAX,以便與您的數據對象一起工作,以便頁面只加載一次。

+0

我發現的大多數源代碼都是專門用於MySQL的分頁類: -/ – nmford

+1

它可能專門針對MySQL,但它應該適用於其他類型的數據存儲(即XML)。你能鏈接到課堂上嗎? – imkingdavid

0

您可以緩存XML或者在使用memcached內存或將其保存到本地文件進行閱讀。

此外,您可以將其保存爲另一種更快的格式(可能爲json?)並將其分割成文件 - 每個頁面一個文件 - 並且只讀取需要的頁面文件。

如果該文件是用戶特定的,那麼其他選項是將它保存在會話中(如果它不是太大的數組形式),或者如果你想保存在一個文件中,然後pre-session-id爲文件名。

這完全取決於你想要對文件和它的內容做什麼。