ОБСУДИТЬ ПРОЕКТ
EN RU
Контакты
Мы на связи

Контактное лицо: Крылов
Александр Викторович

ИНН: 3100804517

+38 (095) 385-98-25

E-mail: [email protected]

Skype: gelos_912

Напишите нам

Спасибо, что обратились к нам!

Ваше сообщение отправлено и в ближайшее время мы его рассмотрим и постараемся ответить

Непонятки по работе с кэшем phpBB 3

Раньше я уже писал, что нами выполнялась конвертация сайта jmj.com.ua с phpBB 2 на phpBB 3 и при конвертации были определенные проблемы с экспортом — импортом базы. Дело в том, что по какой-то причине, скрипт автоматической миграции не хотел работать на хостинге, жаловался на его ограничения.
Непонятки по работе с кэшем phpBB 3
Раньше я уже писал, что нами выполнялась конвертация сайта jmj.com.ua с phpBB 2 на phpBB 3 и при конвертации были определенные проблемы с экспортом — импортом базы. Дело в том, что по какой-то причине, скрипт автоматической миграции не хотел работать на хостинге, жаловался на его ограничения.

Раньше я уже писал, что нами выполнялась конвертация сайта jmj.com.ua с phpBB 2 на phpBB 3 и при конвертации были определенные проблемы с экспортом — импортом базы. Дело в том, что по какой-то причине, скрипт автоматической миграции не хотел работать на хостинге, жаловался на его ограничения. Пришлось скопировать сайт на локальный компьютер, отконвертировать его и залить обратно. В процессе заливки обратно на хостинг были некоторые проблемы с записью данных форумов, веток и постов (естественно написанных на русском), а также имен пользователей, также написанных по-русски.

В результате, движок отображал зарегистрированных пользователей как «Гость», «Гость2″ и т.д. как в самих обсуждениях, так и в общем списке всех зарегистрированных пользователей. Таблица была отредактирована, пользователи с русскими никами восстановлены. После этого список зарегистрированных пользователей выглядел правильно.

Однако, как оказалось, проблемы на этом не закончились. После некоторого время тестирования было обнаружено, что в самих конференциях зарегистрированные пользователи отображаются как гости :) Согласитесь, как-то неправильно, когда у гостя более сотни сообщений на счету :)

Чутье подсказывало что проблема лежит в области кэша, однако его очистка не принесла сколько-нибудь ощутимых результатов :( Было обнаружено, что и у других людей есть похожие проблемы:

Импортировано с http://stackoverflow.com/questions/357161/phpbb3-cache-issues :
hi, i have an issue with caching of templates in phpbb3. i have made changes to a template in the admin control panel and saved it, then cleared the template cache through the «purge cache» and i don’t see changes reflecting on the forum, but the change WAS saved in the admin control panel. i next edited the template file manually (not through the admin control panel) and uploaded my altered template file and deleted all the files from the cache directory and i still see no changes. can anyone tell me is there anywhere else that the cache files are stored? also, when i try to delete the cache for a specific file through the admin control panel in the styles section and selecting the «cache» link the page says it was deleted but the cache seems to remain. can anyone tell me if there’s more than one place that the cache files are stored?? thoughts??

Крики в ночи остались без ответа… :)

В моем случае решилась задача следующим образом:

Был отредактирован файл /includes/functions_content.php и из него была убрана показанная часть:

function get_username_string() { .................................................................. // If the get_username_string() function had been executed once with an (to us) unkown mode,  // all modes are pre-filled and we can just grab it.  if ($user_id && $user_id != ANONYMOUS && isset($_profile_cache[$cache_key][$mode])) { // If the mode is 'no_profile', we simply construct the TPL code due to calls to this// mode being very very rare if ($mode == 'no_profile' { $tpl = (!$_profile_cache[$cache_key]['colour']) ? '{USERNAME}' : '{USERNAME}' return str_replace(array('{USERNAME_COLOUR}', '{USERNAME}'),  array($_profile_cache[$cache_key]['colour'], $_profile_cache[$cache_key]['username']), $tpl);  } return $_profile_cache[$cache_key][$mode]; } ............................ }

Таким образом кэширование имен пользователей было попросту отключено. Не самое элегантное решение, однако достаточно простое и действенное. Кроме того, даже при большой нагрузке отсутствие кэширования такой небольшой по объему информации как имя пользователя проблем не создаст.

UPD.: В качестве альтернативы можно предложить следующее решение:

после $cache_key = $user_id; написать следующие код:

if($username == "" || stristr($username, "Гость")) { $sql = "SELECT `username` FROM `phpbb3_users` WHERE `user_id`=$user_id;" $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $username = $row['username']; }

Таким образом мы используем правильно передаваемый user_id (а у меня он передавался правильно) и перекрываем использование кэша, подставляя в переменную $username определенное правильно имя пользователя.

гарантии

гарантии

  • 10 лет на международном рынке
  • Внутренние стандарты качества
  • AGILE - методики планирования разработки
  • Передовые методики управления проектами с помощью JIRA
  • Налаженный производственный цикл от планирования и прототипирования до ручного и автоматического тестирования
посмотреть сертификаты отзывы наших клиентов
ГЛАВНОЕ В УСПЕШНОМ ИНТЕРНЕТ-ПРОЕКТЕ
это подобрать надежного и профессионального подрядчика с полным циклом услуг
заполнить бриф