一次。首先,忍受我,这是深夜,我很累,所以这可能是一个简单的答案......
我正逐一收集产品信息,然后将每个产品写成CSV文件中的一行。但是,我不想要一个巨大的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);
但是,我只是不断收到“无法写入文件”错误。这是为什么?
答案 0 :(得分:2)
ftell()函数将始终告诉您文件中的当前字节偏移量。在每次写入之前测试它的值,如果超过预定义值,则可以关闭该文件并打开一个新文件。
答案 1 :(得分: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 />';
}