2011-01-27 6 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 />'; 
} 

Edit: Или еще лучше:

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

Ха-ха! Я знал, что это было что-то глупое. Я должен был помнить об этом, но часто не использую функцию fwrite(). Благодаря! – chaoskreator

1

ftell() функция всегда покажет вам ваш текущий байт смещения в файл. Проверьте значение этого параметра перед каждой записью, и если оно превысило предопределенное значение, вы можете закрыть этот файл и открыть новый.

+0

Я даже не слышал об этой функции, но я обязательно посмотрю. Благодаря! – chaoskreator

Смежные вопросы