2011-01-27 11 views
0

再度。まず第一に、夜遅く、疲れているので、これはおそらく簡単な答えです...書面ファイルのサイズを制限する

私は、製品ごとに情報を集めています。 CSVファイルの行。しかし、私は1つの巨大なCSVファイルを望んでいないので、ファイルをサイズ別に分割しようとしています。それぞれの新製品が収集されると、スクリプトは書き込みしようとしているファイルが制限を超えていないかどうかをチェックする必要があります。そうであれば、そのファイルに書き込む必要があります。そうでない場合は、新しいファイルを作成し、その製品を新しいファイルに追加する必要があります。

は、ここで私がまま現在のファイルのサイズを制限しようとしているものです。しかし

$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

1

ftell()関数は常に、あなたの現在のバイトがオフセットを教えてくれますファイル。各書き込みの前にこの値をテストし、事前定義された値を超えている場合は、そのファイルを閉じて新しいファイルを開くことができます。

+0

私はその機能について聞いたこともありませんが、私は間違いなく一見します。ありがとう! – chaoskreator

関連する問題