2011-01-27 70 views
0

。首先,忍受我,深夜,我累了,所以這可能是一個簡單的答案...再次寫入文件的限制大小

我收集產品的信息,逐一,然後寫每個產品爲CSV文件中的一行。但是,我不想要一個巨大的CSV文件,所以我試圖按大小分割文件。在收集每個新產品時,腳本應檢查它要寫入的文件是否小於限制。如果是,那麼它應該繼續並寫入該文件。如果不是,則應該創建一個新文件並將產品添加到新文件中。

這是我curently都試圖限制文件的大小:

$f = 1; 
if(file_exists($shop_path.'items/items'.$f.'.txt')) 
{ 
    if(filesize($shop_path.'items/items'.$f.'.txt') >= 512000) 
    { 
     $f++; 
     $fh = fopen($shop_path.'items/items'.$f.'.txt', "a+"); 
    } 
    else 
    { 
     $fh = fopen($shop_path.'items/items'.$f.'.txt', "a+"); 
    } 
} 
else 
{ 
    $fh = fopen($shop_path.'items/items'.$f.'.txt', "a+"); 
} 

if(fwrite($fh, $prod_str) === TRUE) 
{ 
    echo 'Done!<br />'; 
} 
else 
{ 
    echo 'Could not write to file<br />'; 
} 
fclose($fh); 

不過,我只是不斷收到「無法寫入文件」的錯誤。爲什麼是這樣?

回答

1

fwrite不會返回一個布爾值,只有在失敗時才返回(false)。

「fwrite()返回寫入的字節數,錯誤時返回FALSE。」

退房:http://hu2.php.net/manual/en/function.fwrite.php

也許它的工作原理:

if(fwrite($fh, $prod_str)) 
{ 
    echo 'Done!<br />'; 
} 
else 
{ 
    echo 'Could not write to file<br />'; 
} 

編輯: 甚至更​​好:

if(fwrite($fh, $prod_str) !== false) 
{ 
    echo 'Done!<br />'; 
} 
else 
{ 
    echo 'Could not write to file<br />'; 
} 
+0

哈哈!我知道這是愚蠢的。我應該記住,但我不經常使用fwrite()函數。謝謝! – chaoskreator 2011-01-27 18:32:30

1

ftell()函數總是告訴你,你當前字節的偏移文件。在每次寫入之前測試它的值,如果它超過了預定義值,那麼可以關閉該文件並打開一個新文件。

+0

我從來沒有聽說過這個功能,但我一定會看看。謝謝! – chaoskreator 2011-01-27 18:27:02