2
讓我們承認我們有一個巨大的文本文件,更準確的ics文件。巨大的... 10MB以上
我們希望能夠讀出只有從php fopen - 如何使用fopen打開文件的一部分,
'BEGIN:VEVENT CREATED:20111130T144848Z' ...
用PHP
一塊它的
... 'END:VEVENT'.
下一個出現爲了使用它作爲一個數組
有人有提示嗎?
讓我們承認我們有一個巨大的文本文件,更準確的ics文件。巨大的... 10MB以上
我們希望能夠讀出只有從php fopen - 如何使用fopen打開文件的一部分,
'BEGIN:VEVENT CREATED:20111130T144848Z' ...
用PHP
一塊它的
... 'END:VEVENT'.
下一個出現爲了使用它作爲一個數組
有人有提示嗎?
嘗試這樣的事:
$numb=0;
$result=array();
$handle = @fopen("inputfile.txt", "r");
$exit=0;
while (($buffer = fgets($handle) && $exit==0) {
if(strpos($buffer,'BEGIN:VEVENT')){
$onoff=1;
}
if ($onoff==1){
$result[$numb]=$buffer;
$numb=numb+1;
}
if(strpos($buffer,'END:VEVENT')){
$onoff=0;
$exit=1;
}
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
如果您必須在同一個文件中處理多個事件,您可以添加一個新的參數,如果您想設置'exit'參數: ) – Anze
使用FSEEK導航:http://www.php.net/manual/en/function.fseek.php和FREAD讀取數據:HTTP:// WWW .php.net/manual/en/function.fread.php – user4035
'fopen()'只是打開文件,它不會讀取任何文件。當你到達終點線時,停止調用fgets()。 – Barmar
我建議每X分鐘緩存一次你需要的部分,這樣減少了負載。特別是當你不知道這個部分的位置時,最壞的情況會導致搜索10MB的數據,而且根本找不到它。 所以,如果你必須這樣做,每一個請求將需要很多時間。 – B8vrede