Demian
02.04.2010, 14:30
Всем привет.. кратко о проблеме:
открываем файл в r+, в файле есть строка "1111111111", необходимо заменить её на "234" и чтобы в файле в итоге было записано "234", но после записи получаем "2341111111", забивает только первые байты, а всё что дальше - не трогает, а то что дальше нафиг не нужно.. пример скрипта:
<?PHP
$file_save = fopen('cat_id_db2.txt',"r+");
if (!$file_save)
{
usleep(100000);
$file_save = fopen('cat_id_db2.txt','r+');
}
$read=fread($file_save,filesize('cat_id_db2.txt')) ;
echo $read;
rewind($file_save);
fwrite($file_save,'22');
fflush($file_save);
fclose($file_save);
?>
суть в том что файл открывается в начале скрипта, блокируется, выполняются некоторые манипуляции, результат записывается с сериализацией, файл закрывается, unserialize из этого файла нормально будет работать, проигнорит всё лишнее, но вот в итоге вес файла может неплохо вырости по такой постанове... как можно затиреть всё то лишнее, заново не обращаясь к файлу?
открываем файл в r+, в файле есть строка "1111111111", необходимо заменить её на "234" и чтобы в файле в итоге было записано "234", но после записи получаем "2341111111", забивает только первые байты, а всё что дальше - не трогает, а то что дальше нафиг не нужно.. пример скрипта:
<?PHP
$file_save = fopen('cat_id_db2.txt',"r+");
if (!$file_save)
{
usleep(100000);
$file_save = fopen('cat_id_db2.txt','r+');
}
$read=fread($file_save,filesize('cat_id_db2.txt')) ;
echo $read;
rewind($file_save);
fwrite($file_save,'22');
fflush($file_save);
fclose($file_save);
?>
суть в том что файл открывается в начале скрипта, блокируется, выполняются некоторые манипуляции, результат записывается с сериализацией, файл закрывается, unserialize из этого файла нормально будет работать, проигнорит всё лишнее, но вот в итоге вес файла может неплохо вырости по такой постанове... как можно затиреть всё то лишнее, заново не обращаясь к файлу?