
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
۩
Дата
|
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
Здравствуйте уважаемые специалисты.
Есть файл (us/db/fav/$us_id), этот файл ($us_id) содержит в себе строки типа: aaa1 aaa2 aaa3 и т.д. Есть папка (control/db_boys/rec/), в которой содержатся файлы типа: aaa1 aaa2 aaa3 и т.д. Т.е. строка файла "$us_id" = названию файла в папке "control/db_boys/rec/". Подскажите, пожалуйста, как перебрать массив элементов файла "$us_id" таким образом, чтобы сравнить - существует ли файл в папке "control/db_boys/rec/" с таким же названием или нет. И в случае если нет, то из файла "$us_id" такую строчку удалить. |
![]() |
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 690 Пользователь №: 39616 На форуме: Карма: 71 ![]() |
https://chatgpt.com/share/b3808041-dcf4-4f1...81-b1f6ce980908
<?php Я сам не проверял, но на первый взгляд что-то приемлемое. -------------------- |
![]() |
۩
Дата
|
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
brevis, спасибо вам за ответ. И отдельное спасибо за комментарии. Один вопрос, скажите пожалуйста, чтобы при каждой загрузке страницы не перезаписывать файл, я могу сделать так?
$us_id = 'us/db/fav/your_us_id_file'; // Замените 'your_us_id_file' на нужное имя файла |
![]() |
|||
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
Kuzma92 Перезаписывать файл в цикле? С какой целью?
… добавить условие работы этого кода. -------------------- Бесплатному сыру в дырки не заглядывают...
|
||
![]() |
۩
Дата
|
||||
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
FatCat, извиняюсь за поздний ответ. Не совсем понимаю. Ну как здесь получается, что если оставлять эту строку в цикле, то при каждом обновлении/загрузке страницы, файл перезаписывается/пересохраняется. Если же эту строку перенести в цикл, то файл перезаписывается только в том случае, если удаляется из него ненужная строка. Ну как бы по логике, как я понимаю, должно же быть так? Зачем перезаписывать и пересохранять файл при каждой загрузке страницы, если в нем не делаются изменения? Другой вопрос, правильно ли это так делать? Поэтому я и спросил:
Походу значит нежелательно так делать, раз вы говорите:
но тогда как правильно написать это условие? |
||||
![]() |
[x]
Дата
|
||
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 690 Пользователь №: 39616 На форуме: Карма: 71 ![]() |
Kuzma92, можно запомнить сколько строк в файле было сначала и сравнить это число с количеством строк после того, как мы проделали все проверки и удаления. Если число строк не совпадает -- значит были удаления и можем перезаписать файл: <?php
Это вопрос в правильном направлении. При загрузке каждой страницы и проверять существуют ли все файлы из списка зачастую бывает не оправданно. Более оправданно просто брать эти данные из кеша. -------------------- |
||
![]() |
|||
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
А если в файле лиш6ие сотни строк — сотни перезаписей. В цикле лучше не перезаписывать файл а фиксировать, есть ли изменения. Как-то так: $flag = FALSE; PS: Ну и, чтобы каждой страницей не мучать файловую систему, весь этот код поместить на отдельную страницу, которую будешь открывать только тогда, когда нужно. Это сообщение отредактировал FatCat - 30.06.2024 - 17:07 -------------------- Бесплатному сыру в дырки не заглядывают...
|
||
![]() |
۩
Дата
|
||||
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
brevis FatCat
да, точно же.. как же я сразу не догадался об этом?
ну да, меня это и смущало, поэтому и задал этот вопрос. ой братцы, огромное спасибо за помощь и полезную для меня информацию! Пошел писать код под себя. Всем успехов! |
||||
![]() |
|
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
$rec = 'control/db_boys/rec/'; Извиняюсь, вынужден поднять эту тему снова. Всё бы хорошо. Но есть один момент, самостоятельно не удается решить задачу. Если в папке control/db_boys/rec/ какой либо файл отсутствует, который имеется в файле us/db/fav_boys/'.$us_id.' то файл успешно перезаписывается, и пустые строки отсутствуют, за исключением последней. Здесь всё хорошо. Но, когда скажем в файле остается только одна заполненная строка, например: 123456789 и внизу каретка ..и удаляется этот (123456789) файл из папки control/db_boys/rec/ ..то после этого в файле us/db/fav_boys/'.$us_id.' остается две пустые строки, вместо одной. |
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 54 Пользователь №: 46417 На форуме: Карма: ![]() |
Кузьма, перестань изобретать велосипеды и чутка про базы данных почитай, в твоём случае даже SQLite годна будет. Файлы в файлухе, данные в базе данных )
|
![]() |
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 690 Пользователь №: 39616 На форуме: Карма: 71 ![]() |
Kuzma92, похоже, что каретки накапливаются из-за добавления \n тут:
implode(PHP_EOL, $lines) . "\n" Если тебе прям очень нужна новая строка в конце, то может помочь просто оборачивание implode(...) в trim(): implode(PHP_EOL, $lines) . "\n" ---> trim(implode(PHP_EOL, $lines)) . "\n" А так, вообще, я присоединяюсь к предыдущему оратору. Если конечно у тебя не стоит цель написать скрипт с наибольшим количеством костылей и тд. -------------------- |
![]() |
۩
Дата
|
||||
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
brevis, спасибо вам за полезный совет, теперь буду знать. Спасибо!
don.bidon, спасибо вам за совет. Конечно, и к БД перейду. Нисколько не спорю, просто.. ну всё нужно попробовать.
Нет, такой цели нет)) Братцы, конечно вы правы. Вот и планирую сейчас сделать этот сайт на файлах, а следующий уже осваивать с полноценной БД. Для мелких сайтов думаю, что mysql незачем, а вот SQLite или что-то подобное, что попроще, в самый раз. Буду благодарен и за полезные советы, касаемо того, какую БД лучше и проще всего использовать для сайтов, содержащих не более трех-пяти сот страниц и проходимостью не более тысячи посетителей в день. |
||||
![]() |
|||
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
Ту, которая есть у всех хостеров. -------------------- Бесплатному сыру в дырки не заглядывают...
|
||
![]() |
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
Я так и не понял главного, зачем хранить название файлов из директории в отдельном файле?
-------------------- |
![]() |
|||
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
Как я понял, сама идея правильная, и была бы хороша, если бы реализовалась на БД, а не на файлах. Например, форум. Самую большую нагрузку дают просмотры топиков. Для отображения топика нужна информация о пользователе: ник, айдишник (для ссылки на профиль), количество сообщений, дата регистрации. Это и хранится в таблице members. А редко требующаяся информация, как то день рождения, увлечения, настройки журнала и прочая дребедень, хранится в таблице members_extra, и джойнится только по мере необходимости. Так и у него на файлах, только вместо таблицы members файл members, а вместо таблицы members_extra директория с файлами, где каждый файл сопоставлен каждому пользователю. -------------------- Бесплатному сыру в дырки не заглядывают...
|
||
![]() |
![]() ![]() ![]() |