0 / 0 / 1
Регистрация: 20.11.2015
Сообщений: 62
07.11.2017, 08:40  [ТС] 1
Author24 — интернет-сервис помощи студентам
Есть кусок кода, который стоит в начале скрипта, который берет первую строку из файла txt, присваивает ее переменной и перезаписывает строку в конец файла txt. Скрипт запускается периодически, и иногда при очередном запуске все данные из файла txt удаляются. Почему так происходит и как этого избежать?

PHP
1
2
3
4
5
$file = file('text.txt', FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
$str = $file[0];
$temp = array_shift($file);
array_push($file, $temp);
file_put_contents('text.txt', implode(PHP_EOL,$file));
0
Заблокирован
07.11.2017, 10:12 2
Цитата Сообщение от Alex174 Посмотреть сообщение
Почему так происходит и как этого избежать?
Вероятно, во время перезаписи файла одновременно получает доступ к нему и чтение и запись. Я бы на Вашем месте попробовал использовать другие функции.
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
07.11.2017, 14:29 3
Лучший ответ Сообщение было отмечено Alex174 как решение

Решение

Цитата Сообщение от Alex174 Посмотреть сообщение
$str = $file[0];
Берем мы строку из файла. А где вы ее собственно перезаписываете?

PHP
1
2
3
$file = file('text.txt');
$_ = array_slice($file,1); $_[] = $file[0];
file_put_contents('text.txt',$_);
0
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru