我已經創建了一個PHP文件,它被設置爲讀取本地文本文件的內容,解析爲一個數組,然後在主頁面中填充一個表格。但是,即使只有53行的文本文件在顯示任何內容之前大約需要10秒才能加載頁面。PHP - 加載頁面後填寫表格內容
據我所知,這是一個限制,其中服務器需要創建整個HTML文件之前發送到客戶端,並且這一代需要時間取決於要生成的內容的大小,這意味着這10秒可能會增加有更多的線路要處理。最終產品將有超過500條線路進行處理,因此這需要幾分鐘時間才能生成,然後發送給客戶端。
我想知道是否可以繞過這個,發送客戶端一個小的HTML文件,拿着一個空表,然後開始填充和使用PHP填充這張表,但我不確定如何去做這件事。我是否會將一個include包含到一個單獨的php文件中,該文件將調用生成代碼,或者讓服務器將內容一次一行地「流」到內容中?
相關頁面:http://zionfox.net/cards.php。目前的加載時間大約需要7-10秒,我想通過加載核心表來減少這個時間,然後顯示源表生成的表格行。
編輯:也有一個更大的圖像的原因:當放大移動設備時,我寧願圖像與字體一樣清脆和尖銳。我嘗試使用實際大小的圖像(20px),放大時幾乎不可讀。我意識到.png可能不是最好的格式,但這是我第一次使用file_put_contents()
,但我並不完全確定源代碼文件的圖像,也不確保圖像保持透明度。
編輯:編輯:該文件的來源是:http://zionfox.net/cards.php.txt - 請原諒代碼的sc,,它仍然在進行中,並且在整理代碼之前我想先讓它工作。
使用explode()
將文件拆分爲一個由字符分隔的數組。然後使用更多explode()
s將這些數組中的每個數組分割成更多數組,然後處理該數組的每個部分以查看條件是否匹配,並根據這些值返回正確的結果,包括從外部來源提取圖像(如果我不' t已經有了圖像。這是在for循環底部創建一個新的表格行然後echo
,然後它重複下一行的過程。
由於Tenhsor,解決這個:
$handle = fopen($pathToFile, "r");
if(ob_get_level() == 0) ob_start();
if($handle) {
while(($line = fgets($handle)) !== false) {
echo $row . "<br />";
//The code you want to process
ob_flush();
flush();
}
}
ob_end_flush();
fclose($handle);
在他們的反應中發現完整的解決方案。
我也想添加,這個代碼本身並沒有解決我的問題。我正在運行IIS 7.5並且必須發出命令才能正常工作。該命令取決於您的PHP版本,您應該可以通過IIS找到該版本。給予CMD.EXE命令是:
%windir%\system32\inetsrv\appcmd.exe set config /section:handlers "/[name='PHP53_via_FastCGI':ResponseBufferLimit:0"
哪裏PHP53_via_FastCGI
是名稱和您的PHP版本。
這似乎是一個有趣的方法,我將不得不看看它是如何工作的,以及它是否可以輕鬆實現到我當前的代碼中。謝謝! – 2014-10-05 16:32:59
沒問題,讓我知道它是如何工作的。 – tenhsor 2014-10-05 16:34:52
不幸的是,這似乎並沒有工作。我創建了一個新文件來測試這個過程,但它仍然希望等到文件完成後才顯示任何數據。測試網址:http://zionfox.net/test.php - 來源:http://zionfox.net/test.php.txt – 2014-10-05 17:19:35