我有一個大約1.7MB的文本文件,它有我需要的應用程序的單詞列表。我需要在頁面加載時將其加載到數組中,然後可用於AJAX請求所針對的其他PHP文件。現在,我在加載頁面時將它加載到數組中,然後將其存儲在會話中,以便AJAX文件在請求它時可用。這是做這件事的最好方法嗎?將文件加載到PHP數組中,最好的方法是什麼?
回答
真的取決於你在處理數據。如果AJAX只需要這個龐大列表中的某幾個單詞,它可能最好存儲在一個數據庫中。
千萬記住,即使列表存儲在一個會話它會暗示你的腳本加載了對每一個調用數組。對於或許是的東西來說,接縫不是非常需要。
雖然你不給我們很多細節。
,你可以獲得時間執行sql查詢,而不是循環整個1.7MB的單詞 – pleasedontbelong 2010-08-19 17:51:55
只是爲了更清楚一點,該數組將有近200,000個元素(單詞)。 AJAX請求基本上檢查給定的單詞是否在數組中。 – roflwaffle 2010-08-19 19:40:31
@Brandon不要猶豫,把它放入數據庫。使用減少的資源(更少的RAM),您將獲得性能提升(速度搜索)。 – Frankie 2010-08-19 22:25:19
如果整個陣列必須加載到PHP,我會寫一個腳本,使它成爲一個包含單詞列表的數組定義一個PHP腳本,讓你有一個包含PHP文件:
$myArray = array('blah', 'blah', 'blah'); //etc
然後,我會包括(require_once)......最PHP腳本引擎將能夠以優化很容易地......沒有多大意義在其存儲在一個會話,只是將使用更多的磁盤空間/數據庫空間/內存以供存儲。
的file
命令是相當快,所以我敢肯定有將是備受緩存任何收穫。
您是否在每一頁上加載數據?如果不是這樣,不要和會話一起去,因爲即使你不需要它,你也會有加載的開銷。
數據取決於用戶嗎?如果不是這樣,不要與會話一起去,因爲你會毫無理由地複製所有的數據。
如果你正在做的更復雜的分析,那麼我會建議使用緩存
file_put_contents($filename, '<?php return '.var_export($array, true).';');
然後文件,你需要做的是$data = include $filename
獲取數據...
你可以即使它足夠智能以檢測更改:
function getData() {
static $data = array();
if (empty($data)) {
$cache = '/path/to/cache/file';
$full = '/path/to/original/file';
if (!file_exists($cache) || filemtime($cache) < filemtime($full)) {
$data = parseDataFileIntoArray($full);
$code = '<?php return '.var_export($data, true).';';
file_put_contents($cache, $code);
} else {
$data = include $cache;
}
}
return $data;
}
小心解釋downvote?假設整個數組必須在PHP域(不使用數據庫),這是一個相當不錯的設計。它避免了每個頁面加載的雙重內存使用問題,即任何序列化的內容都會有問題。它適用於所有服務器(因爲它不需要PECL擴展)。如果您安裝了一個OPCode緩存,它將充分利用OPCode緩存(不需要更改該功能)... – ircmaxell 2010-08-19 18:04:46
- 1. 在PHP中加載一組文字數據的最簡單方法是什麼?
- 2. 將XML文件加載到對象中。最好的方法?
- 3. 保存/加載數組內容到文件的最佳方式是什麼?
- 4. 什麼是將entityproxy綁定到UI組件的好方法?
- 5. 在php中加載dll的最佳方法是什麼?
- 6. 將大文本文件加載到int數組中的最快方法
- 7. 將數值附加到元素的好方法是什麼?
- 8. 什麼是最簡單的方式下載PHP中的文件
- 9. 將數組添加到Mysql的最佳方式是什麼
- 10. Android的PHP函數 - 什麼是最好的方法?
- 11. 將數據庫添加到html文件最簡單的方法是什麼?
- 12. 在Matlab中加載數據的最快方法是什麼?
- 13. 將數據加載到db的更有效方法是什麼?
- 14. 什麼是在laravel中將數組數據保存到mySQL的好方法
- 15. 什麼是最好從/電子郵件驗證方法在PHP?
- 16. 什麼是預加載數據的好方法?
- 17. Sort ObservableCollection - 什麼是最好的方法?
- 18. 什麼是記錄最好的方法?
- 19. 在PHP中組合這個數組數組的最有效方法是什麼?
- 20. 在PHP中讀取大文件的最佳方法是什麼?
- 21. 解析這個配置文件的最好方法是什麼?
- 22. 什麼是最好的方法來存儲PDF文件?
- 23. 什麼是最好的方法來生成xml文件
- 24. 將數據寫入文件的最有效方法是什麼?
- 25. 將數據保存到文件的最佳方式是什麼?
- 26. 在Django的Angular中幹什麼最好的方法是什麼?
- 27. 在c#中加密文件最簡單的方法是什麼?
- 28. 加載正確的PhoneGap文件的最佳方式是什麼
- 29. 什麼是最快/最有效的方式來追加一個文件加載到內存中的文件?
- 30. 在matlab中加載多個圖像tiff文件的最快方法是什麼?
爲什麼不在加載頁面時將其加載到數組中?爲什麼要進入會話?你真的需要在每個頁面加載所有這些話嗎? – 2010-08-19 17:47:18
我想知道的是,如果我將文件加載到AJAX請求轉到的PHP文件中的數組中,如果它將每個請求中的文件加載到數組中。 – roflwaffle 2010-08-19 23:35:09