Я пытался выяснить файловые указатели в PHP, поэтому я написал небольшой скрипт для его проверки:
$fp = fopen('test.me', 'w+');
fwrite($fp, '12345');
rewind($fp);
echo 'contents: ['.stream_get_contents($fp)."]\n";
fseek($fp, 0, SEEK_END);
fwrite($fp, '6789');
fclose($fp);
echo 'contents: ['.file_get_contents('test.me')."]\n";
Легко и приятно. Откройте файл для чтения / записи из него. Напиши ему. Вернитесь к началу файла, распечатайте его содержимое. Перейти в конец файла, добавить еще немного к нему. Наконец, распечатайте все содержимое файла.
Я запускаю его и получаю ожидаемые результаты:
contents: [12345]
contents: [123456789]
Гордясь собой за то, что написал этот шедевр, я подхожу к своему терминалу, подбираю и вхожу, чтобы запустить его снова.
Этот раз:
contents: []
contents: [123456789]
Оказывается, что если файл существует в начале скрипта, первый блок всегда contents:[]
, Если я удалю test.me
файл, то первый блок contents:[12345]
,
Что тут происходит?
Задача ещё не решена.
Других решений пока нет …