yura3d |
Отправлено: 7 июля 2009 — 14:21
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
electron пишет:может не в тему, но назрел вопрос : а в каком файлике можно подкорректировать дату из вот этой надписи вверху поста
Просто. Кликаете по кнопке ID в нужном сообщении, появиться прямая ссылка на него, в которой будет фрагмент:
CODE:topic.php?forum=X&topic=Y&postid=Z#Z
где X, Y, Z соответственно номера раздела, темы и сообщения.
Далее открываете файл forumX/Y-thd.php и находите в нём число Z. Это число и является датой сообщения, представленной в формате Unix timestamp (с учётом выставленного на сервере часового пояса). Прибавляя или отнимая от этого числа единицу, Вы соответственно увеличиваете или уменьшаете время на одну секунду. Если Вы изменяете дату сообщения, которое является последним в форуме или подфоруме, то не забудьте также пересчитать статистику этого раздела в админке |
|
|
alexx |
Отправлено: 12 февраля 2010 — 16:53
|
Advanced Member
Покинул форум
Сообщений всего: 495
Дата рег-ции: Февр. 2010
Откуда: Россия
Репутация: 12
|
yura3d пишет:2B пишет:Обратиться не проблема, вопрос - что мне ему сказать? Что именно хостер должен сделать, чтобы у меня не обнулялись файлы?
Спросить нужно, какие права на запись следует устанавливать для файлов и папок. Проблема в том, что универсальные (от кого-то такой термин слышал) права 777 на многих хостингах открывают полный доступ к файлам для других пользователей сервера, а это серьёзная брешь в безопасности.
Вот приложил скин, папка data, как я понимаю при установке нужно выставить права на запись владельца, а групповые и публичные запретить на запись ( снять галочки) ?
Тоесть оставить права владельцу?
Цитата:A3: На следующие файлы и папки форума необходимо выставить права доступа на запись:
* для папки data и всех файлов в ней
* для папок вида forumN и всех файлов в них (N - номер раздела)
* для папки members и всех файлов в ней
* для папки messages и всех файлов в ней
* для папки uploads и всех файлов в ней
* для папки im/avatars/personal и всех файлов в ней
* для папок вида modules/YYY/data и всех файлов в них (YYY - название модуля)
PS/ Снял права на запись групповые и публичные.. форум не загрузился.
Вернул все назад, заработал. Прикреплено изображение
(Отредактировано автором: 12 февраля 2010 — 17:06) |
|
|
yura3d |
Отправлено: 2 июля 2010 — 13:16
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
Defenderyk
Уже пару раз ко мне обращались с подобной проблемой. Причина обнуления была та же - либо заканчивалось место на сервере, либо же на определённых этапах работы происходила нехватка выделенной оперативной памяти для PHP на сервере. Обработка подобных ситуаций с целью недопустить потерю данных довольно сложна и требует существенных затрат ресурсов, что скажется не самым лучшим образом на производительности. Более того, обработку файлов на PHP невозможно реализовать в виде единой операции (транзакции), соответственно и существенно затруднена возможность осуществления отката (отмены всех действий текущей транзакции) к предыдущей версии файловой базы данных при наступлении сбоя (без использования транзакционного подхода есть риск нарушения целостности базы данных: какие-то файлы будут обновлены, а какие-то нет, и в результате данные в них перестанут соответствовать друг другу)
alexx пишет:Может делать предварительную запись в буфер и если все окей, то файл записывается, как записался, буфер опустошается.
В PHP изначально запись на диск буферизируется. Но проблема в том, что практически все действия на форуме затрагивают не один файл, а как минимум несколько. И может оказаться так, что для первых файлов свободного пространства хватает, а для последнего нет. В итоге, даже если и восстановить содержимое последнего файла из буфера, оно не будет соответствовать обновлённым данным в первых файлах, а это уже нарушение целостности базы данных, о чём было сказано выше. Конечно, можно в специальных временных файлах либо буферах сохранять прежние версии файлов, но эта операция крайне расточительна с точки зрения расходованя ресурсов и производительность
vipraskrutka пишет:скорей всего по другой причине, файл открылся для записи, скрипт стер содержимое, тут бац, глюк апача (зависание, кончилась оперативка или перезагрузка) и остался наш файл пустым... Тут не спасет никакие защиты от обнуления...
Всё верно. PHP крайне абстрагирован от уровня оборудования (как и большинство языков программирования высокого уровня, а уж тем более интерпретируемых), поэтому диагностика и решение некоторых проблем на нём реализовать в принципе невозможно
alexx пишет:А как полетел, что случилось с форумом, вроде в обнулением проблема решена.
Решена была проблема с обнулением файлов при осуществлении множественного доступа к ним, про изменённый механизм блокировки файлов для осуществления множественного доступа упоминалось в теме релиза. Разумеется, проблемы и сбои на сервере к этому не относятся
Defenderyk
Во-первых, попробуй восстановить файл списка форумов из резервной копии, которая размещается в файле data/allforums_bak.php, путём переименования этого файла в allforums.php (при этом желательно сделать копию текущего файла, на случай если восстановление из резервной копии не принесёт желаемого результата).
Если восстановление из резервной копии не помогло, можно сделать следующее. Создай в админке новый раздел, заново укажи при этом название, описание, модераторов раздела и другие параметры, т.к. восстановить старые параметры без резервной копии нельзя. Далее всё просто, открой файл data/allforums.php, по названию раздела найди его элемент в сериализованном массиве, он будет выглядеть примерно так:
Цитата:{i:1;a:18:{s:7:"catname";s:8:"Тестовая";s:5:"catid";i:1;s:4:"name";s:8:"Тестовый";s:2:"id";i:1;s:4:"desc";s:0:"";s:5:"posts";i:0;
s:6:"topics";i:0;s:8:"position";i:101;s:6:"stview";s:3:"all";s:5:"stnew";s:3:"all";s:5:"strep";s:3:"all";s:9:"moderator";a:1:{i:1;s:6:"yura3d";}s:7:"private";b:0;s:5:"codes";b:1;s:5:"polls";b:1;s:4:"icon";s:0:"";s:6:"upload";i:0;s:9:"last_time";i:0;}
Красным отмечен номер (id) созданного раздела, теперь нужно заменить этот id номером старого раздела (в 2-х выше отмеченных местах). На этом всё, теперь осталось привести в порядок статистику раздела, для этого в админке напротив него кликаем сначала Восстановить темы, а затем Пересчитать. Если раздел был приватным, то ранее назначенные для доступа к нему пользователи сохраняют свои права
Вообще, где-то у меня была утилита для автоматизации описанных выше процессов, но сейчас что-то не могу найти Было бы неплохо включить её в архив 1-го сообщения темы |
|
|
alexx |
Отправлено: 2 июля 2010 — 14:15
|
Advanced Member
Покинул форум
Сообщений всего: 495
Дата рег-ции: Февр. 2010
Откуда: Россия
Репутация: 12
|
yura3d пишет:Вообще, где-то у меня была утилита для автоматизации описанных выше процессов, но сейчас что-то не могу найти Хм Было бы неплохо включить её в архив 1-го сообщения темы
Да, нужно такую утилиту иметь всем пользователям на всякий случай.
Выложите пожалуйста. |
|
|
|