0

また。まず、我慢してください、夜遅く、疲れているので、これはおそらく簡単な答えです...

製品に関する情報を 1 つずつ収集してから、各製品を CSV ファイルに 1 行として書き込んでいます。ただし、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);

ただし、「ファイルに書き込めませんでした」というエラーが表示され続けます。どうしてこれなの?

4

2 に答える 2

2

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

于 2011-01-27T08:58:37.643 に答える
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 />';
}
于 2011-01-27T08:37:13.480 に答える