我有一個PHP文件執行時間的問題,首先我告訴我在PHP文件中做了什麼..我需要生成CSV文件,所以我編寫了查詢從數據庫中獲取數據。和我的查詢返回100萬條記錄,我已經使用PHP fwrite()將數據寫入CSV文件。但我的腳本採取76.481406211853
秒來生成一個csv文件ehich包含100萬的數據。如何減少這種執行時間?有時我得到致命錯誤:如何減少PHP執行時間以及如何在PHP中設置ini_set()?
Fatal error: Allowed memory size of 1048576 bytes exhausted (tried to allocate 793601 bytes)
那麼,如何管理內存?
PHP代碼在這裏:
<?php
// start script
$time_start = microtime(true);
echo_memory_usage();
//My logic here
// End of Script
echo 'Total execution time in seconds: ' . (microtime(true) - $time_start);
echo_memory_usage();
function echo_memory_usage() {
$mem_usage = memory_get_usage(true);
if ($mem_usage < 1024)
echo $mem_usage." bytes";
elseif ($mem_usage < 1048576)
echo round($mem_usage/1024,2)." kilobytes";
else
echo round($mem_usage/1048576,2)." megabytes";
echo "<br/>";
}
?>
我的結果是
512 kilobytes //Script start
1006.25 megabytes // script End
Total execution time in seconds: 76.481406211853
而且成功寫入CSV 100萬個記錄文件..但執行時間過長,有時會引發致命錯誤。還有如何設置ini_set()?因爲我必須設置ini_set('memory_limit', '1023M');
我之所以設置1023,腳本運行後內存使用率是1006.25,所以我必須設置1023M?這是正確的方式嗎?
爲了澄清,並10個LAKS意味着百萬? – Steve
你顯示的代碼並不顯示你在做什麼,它只是顯示'//我的邏輯在這裏'。解決這個問題的最佳方法是查詢數據庫,然後一次遍歷結果集1行並將條目寫入文件,但是沒有看到任何相關的代碼,很難建議如何改進它 –
此外,維基百科,這裏的大多數人不會知道什麼是lak - 建議使用英語向更廣泛的受衆描述您的問題 –