2014-10-02 28 views
0

我有一個數組,每次頁面加載時都會被查詢,所以我想盡量減少開銷並將數組存儲到會話變量中。數組文件目前爲15kb。我仍然需要爲每個陣列子密鑰添加約300個字。所以文件大小可能會增長到100kb到500kb之間的任何地方。只是一個猜測。將PHP數組存儲到會話變量中以最大化性能?

該數組用於存儲頁面數據,如標題,描述和發佈內容。

這是數組的結構:

11個主鍵。

在這些主鍵子鍵從1隨時隨地20.大多數具有約3至7

每個子鍵都有它自己的陣列titledescriptionpost

標題和描述不能保留太多,但post將保存約300字或更少。

數組中的值將保持靜態。

下面是每個下面有2個主鍵和2個子鍵的示例。

$pages = array(

'Administrator' => array(
    'network-administrator' => array('title' => 'title info here', 'description' => 'description info here', 'post' => '<p>post info here - about 300 words.</p>'), 
    'database administrator' => array('title' => 'title info here', 'description' => 'description info here', 'post' => '<p>post info here - about 300 words.</p>'), 
), 

'Analyst' => array(
    'business systems analyst' => array('title' => 'title info here', 'description' => 'description info here', 'post' => '<p>post info here - about 300 words.</p>'), 
    'data-analyst' => array('title' => 'title info here', 'description' => 'description info here', 'post' => '<p>post info here - about 300 words.</p>'), 
), 

); 

我的問題是三部分。

1)我可以把它放到一個會話變量中,並且仍然能夠從會話數組中訪問數據,就像我直接從數組本身訪問數據一樣?

2)將數組放入會話中是否有任何好處,以減少在每次頁面加載時循環數組的開銷?

這是我從陣列

$content = $pages['Administrator']['network-administrator']; 

$title = $content['title']; 

$description = $content['description']; 

$post = $content['post']; 

3)訪問的值我現在訪問使用與上述相同的或寫入像這樣的數組值?

$pages = $_SESSION[$pages]; 

$content = $pages['Administrator']['network-administrator']; 

$title = $content['title']; 

$description = $content['description']; 

$post = $content['post']; 

需要一定的清晰度,感謝您的幫助。

+0

你如何維護陣列可用atm? – TheWolf 2014-10-02 20:48:14

+0

我看到的最大問題是空間效率。每個訪問您網站的用戶都會將相同的數據保存到磁盤上? – wavemode 2014-10-02 20:48:24

+0

你爲什麼認爲這有助於表現?海事組織,除了你已經擁有的東西外,它還會把你陣列的其他副本加入會議。我看不出有什麼幫助。 – eis 2014-10-02 20:48:26

回答

1

讓他們在會議上會增加開銷,降低性能,因爲這將是一次爲每個用戶存儲。默認情況下,會話是以文件的形式存儲的,所以你會引入額外的文件I/O開銷,增加負載 - 我不明白如何將它們存儲在數據庫中會好很多。

如果您確實想提高處理該數據的性能,它們應該位於內存緩存中。 MemcacheAPC(正如Cheery所述)是很好的選擇。

但是,這隻會有助於如果你的數組處理真的是瓶頸。根據你的描述,我真的不相信。先測量一下,然後才嘗試優化。

1

如果表格值爲「靜態」(對於每個用戶都不相同),將它放入會話中並沒有好處,並且我認爲它根本不會提高性能。

雖然,這裏是我的問題的答案:

1)您將能夠訪問該表像你已經做的,會話可以處理數組

2),它不會減少開銷。會話存儲在文件中,數據被序列化。

3)$pages = $_SESSION['pages']或直接$_SESSION['pages']['Administrator']