Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
22 / 20 / 5
Регистрация: 29.02.2016
Сообщений: 590

Изменить конкретную строку в файле, без перезаписи полного файла

04.09.2016, 10:19. Показов 2939. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли такое? Допустим, у меня есть текстовик. Скрипт на сайте если надо изменит одну строку в этом текстовике. Но если два юзера будут одновременно обращаться к этому скрипту, то за время выполнения обоих скриптов сайт изменит только одно поле. Почему? Потому, что этот скрипт не идеален.
PHP
1
2
3
4
5
$data = file_get_contents("file.txt"); // Вывести данные из файла
$data = str_replace("строка","новая строка",$data); // Заменить
$handle = fopen("file.txt","a"); // Открыть файл
fwrite($handle,$data); // Записать переменную в файл
fclose($handle); // Закрыть файл
Можно ли сделать вот в таком стиле?
строка 5=новая строка
Чтоб остальной файл не тревожить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.09.2016, 10:19
Ответы с готовыми решениями:

Как без перезаписи удалить строку из файла?
У мну задание такое есть именно удалить надо строку а не перезаписовать или копировать файл я вот сделал все ето с векторамы,записовал...

StringGrid: в типизированном файле изменить конкретную запись
Подскажите пожалуйста, как в типизированном файле изменить конкретную запись? все действия в stringgrid конечно

Замена строк в текстовом файле без его перезаписи
Товарищи, подскажите, каким образом можно менять содержимое текстового файла без его перезаписи? Задание выглядит так: требуется найти...

13
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.09.2016, 12:38
Цитата Сообщение от D7ILeucoH Посмотреть сообщение
Возможно ли такое?
Нет.
Цитата Сообщение от D7ILeucoH Посмотреть сообщение
о если два юзера будут одновременно обращаться к этому скрипту, то за время выполнения обоих скриптов сайт изменит только одно поле.
1. Это маловероятно. Почти что вообще невероятно.
2. Это можно отследить. Если не получилось записать в файл, fwrite() вернет false. Можно просто вывести сообщение с предложением записать еще раз. Можно просто поставить задержку после неудачи на 500 мс. Не думаю что запись в файл будет долго длиться.
3. fopen() fwrite() и fclose() можно заменить на file_put_contents.
4. Используйте БД. Они сами обо всем позаботятся. Хоть 1000 человек одновременно будут пытаться записать.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
04.09.2016, 12:44
Используйте блокировку файла при записи.
0
60 / 60 / 31
Регистрация: 24.05.2016
Сообщений: 202
04.09.2016, 13:39
Только если дублировать строки при изменении файла, а скриптом, который использует содержимое этих строк, брать только последнюю. При изменении файла проверять наличие дублирующихся строк и удалять ранний дубль.
0
22 / 20 / 5
Регистрация: 29.02.2016
Сообщений: 590
04.09.2016, 15:38  [ТС]
Это хтацесс
0
60 / 60 / 31
Регистрация: 24.05.2016
Сообщений: 202
04.09.2016, 16:21
Хех.
При обращении к скрипту создавать файлы очереди в каком-нибудь каталоге файл:
"queue_1"
"queue_2"
etc..
Последняя цифра - просто порядковый номер.
По CRON'у дергать файлы из каталога и по очереди заменять содержимое файла .htaccess тем, что в файле очереди.
Фронтенд переводить на ajax.
0
22 / 20 / 5
Регистрация: 29.02.2016
Сообщений: 590
06.09.2016, 15:02  [ТС]
тоже вариант, но сейчас у меня хтацесс весит 200 кб, больше 5000 строк... так что возможно обработка будет слишком нагружать сервер

Добавлено через 47 секунд
у меня фронтенд нормальный, не нужен аякс.
0
60 / 60 / 31
Регистрация: 24.05.2016
Сообщений: 202
06.09.2016, 16:19
D7ILeucoH, не будет. Это копейки для сервера. Единственное, лишь бы вес файла был не больше доступного количества RAM-памяти для сайта.
0
22 / 20 / 5
Регистрация: 29.02.2016
Сообщений: 590
17.09.2016, 10:51  [ТС]
Нагружает! Не копейки совсем! Сервер хилый, если сделать много много запросов, то станет долго отвечать, и "охлаждаться" в течение 10 секунд
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
17.09.2016, 15:45
Значит используйте нормальный сервер. И вообще, что там у Вас за сайт такой, что в .htaccess 5 тысяч строк?
0
Web Programmer
 Аватар для JimUSA
325 / 286 / 121
Регистрация: 28.09.2011
Сообщений: 1,570
18.09.2016, 02:50
Para bellum,
Цитата Сообщение от Para bellum Посмотреть сообщение
И вообще, что там у Вас за сайт такой, что в .htaccess 5 тысяч строк?

Не по теме:

Наверное
RewriteRule ^/news/1$ /news.php?id=1
RewriteRule ^/news/2$ /news.php?id=2
...

:D

0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
18.09.2016, 06:35
JimUSA, скорее всего.
Значит дело не в сервере, а в изначально неправильной архитектуре. Если архитектор решил пару арматур заместо свай для дома использовать -- никто ему не виноват, что дом проседает.
0
18.09.2016, 14:35

Не по теме:

JimUSA, а мне кажется, что там адреса для доступа к сайту прописаны.

0
Web Programmer
 Аватар для JimUSA
325 / 286 / 121
Регистрация: 28.09.2011
Сообщений: 1,570
18.09.2016, 14:38
nekosoku,

Не по теме:

И такое может быть

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.09.2016, 14:38
Помогаю со студенческими работами здесь

Как можно заменить конкретную строку в rtf файле
Доброго времени суток!Подскажите как можно заменить конкретную строку в rtf файле

Создание (сохранение) файла без перезаписи с добавлением цифры к имени файла
Как реализовать в программе возможность сохранения файла без удаления старого(одноимённого файла) Например. Когда я вручную создаю...

Изменение строки из файла без перезаписи
Привет, пробую без перезаписи файла заменить все буквы строки на большие. Пока что вышло только так: bool...

Взять из файла одну конкретную строку
Доброго времени суток! есть текстовый файл в нем много строк, надо по номеру строки считать только отдну, как??

Как прочитать конкретную строку файла?
Добрый день. Столкнулся с задачей реализации изменения содержимого файла. Я придумал, что пользователь введет строку, которую он хочет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru