Вы можете использовать fseek
для изменения указателя в заметке.
Следует отметить, что если вы используете fwrite
, то это сотрет текущий контент. Таким образом, в основном вы должны прочитать весь файл, использовать fseek
, написать новый контент, записать старые данные файла.
$file_data = file_get_contents('database.txt')
$fp = fopen('database.txt', 'a');
fseek($fp,0);
fwrite($fp, 'new content');
fwrite($fp, $file_data);
fclose($fp);
Если ваш файл действительно огромен, и вы не хотите использовать слишком много памяти, вы можете использовать двухфайловый подход, такой как
$fp_source = fopen('database.txt', 'r');
$fp_dest = fopen('database_temp.txt', 'w'); // better to generate a real temp filename
fwrite($fp_dest, 'new content');
while (!feof($fp_source)) {
$contents .= fread($fp_source, 8192);
fwrite($fp_dest, $contents);
}
fclose($fp_source);
fclose($fp_dest);
unlink('database.txt');
rename('database_temp.txt','database.txt');
По моему честному мнению, решение Бена кажется более простым.
И последнее замечание: я не знаю, что у вас на складе database.txt
, но вы можете сделать то же самое проще, используя сервер базы данных.