del

del

+29
Репутация
245
Рейтинг
#1 [ЕСТЬ РЕШЕНИЕ] Долго открывается сайт при использовании "Запомнить меня" 19 апреля 2012 в 16:21

Тут дело в запросе в базу, он сложный ...

KS
Странно, но на хостинге то этот запрос выполнялся без проблем) А на VDS вот такие проблемы. Что ж, еще раз спасибо за подсказку о решении проблемы) Вопрос закрываю.
#2 [ЕСТЬ РЕШЕНИЕ] Долго открывается сайт при использовании "Запомнить меня" 19 апреля 2012 в 15:56

Как вариант попробуйте отключить "показывать комменты гостей", много кому помогает !

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

P.S. + тебе в карму.
#3 [ЕСТЬ РЕШЕНИЕ] Долго открывается сайт при использовании "Запомнить меня" 19 апреля 2012 в 15:18

уууу у меня твой сайт ещё жоще работает 11.18сек)

ideasdigger
Дык, ты на адрес то посмотри, ты открывал сайт, который сейчас на хостинге висит, а на вдс я его пока не перенес, работаю через правку /etc/hosts и временно сделал зеркало на поддомене beta.
А скорость интернета у меня 10 мбит/с.

хотя как оно с запомнить меня связано, непонятно ..

KS
Вот этого я и не могу понять, придется в код модуля смотреть.

А наблюдается во всех браузерах ?

KS
Да.
#4 [ЕСТЬ РЕШЕНИЕ] Долго открывается сайт при использовании "Запомнить меня" 19 апреля 2012 в 11:13

выключи и включи сайдбар

ideasdigger
Не нашел, где он отключается, отключал помодульно, выяснил, что тормоза из-за "последних комментариев" в сайдбаре. Вопрос: почему без "запомнить меня" оно работает нормально, а с этой функцией — лагает?
#5 [ЕСТЬ РЕШЕНИЕ] Долго открывается сайт при использовании "Запомнить меня" 19 апреля 2012 в 10:41
ideasdigger, у меня оно в шаблоне вырезано (время генерации).
Без отметки "Запомнить меня"
С отметкой "Запомнить меня"
С отметкой "Запомнить меня", но без сайдбара
И судя по этому таймлайну, некоторое время ничего не грузится, просто "подвисает".
Может быть, на сервере не хватает какой-то библиотеки?
#1 [ЕСТЬ РЕШЕНИЕ] Долго открывается сайт при использовании "Запомнить меня" 19 апреля 2012 в 10:31
Перенес сайт на VDS с FreeBSD. Честно скажу, ни разу с FreeBSD дела не имел, Linux родней.
Если при авторизации поставить отметку "Запомнить меня", контент загружается быстро, а сайдбар секунды через 2 после всего остального. Если залогиниться без функции запоминания, все открывается одновременно и быстро.
Куда копать?
#7 Как включить возможность голосования для гостей? 20 октября 2011 в 09:00
Марат, спасибо, попробую.
#1 Как включить возможность голосования для гостей? 19 октября 2011 в 16:33
Никак не могу в коде найти, где определяется, что возможность голосовать за статьи и комментарии дается только зарегистрированным пользователям. Как включить возмонжость голосования для гостей? В БД при этом можно записывать только ip гостя, а user_id=0.
#9 Определение ОС и браузера пользователя 7 октября 2011 в 22:45
В общем, отдохнул, на светлую голову сам сообразил, все сделал, пример можно посмотреть тут: linux-easy.ru/blog/programmy/vkplayer-pler-vkontakte-dlja-linux.html
#10 Определение ОС и браузера пользователя 6 октября 2011 в 22:11

Той которой передаешь аргумент. В твоем примере кода — display_useragent, она же и должна вернуть значение.

Max
Понял. Только все равно ничего не получается. Тем более, что иногда обновление страницы происходит нормально, а иногда выдается Fatal error, описанная выше. Что за бред, вообще не понятно. Ладно, гиблое это дело. Для меня Ruby on Rails куда проще, чем это, уж не знаю почему…
#11 Определение ОС и браузера пользователя 6 октября 2011 в 21:33

Надо подредактировать функцию

Max
Не понял. Какую функцию то? У меня их куча. getComments или display_useragent()? return у меня и так присутствует везде.
Я нашел еще косяк в инклуде… Как-то не догадался сразу выставить php_flag display_errors On, инклуд работает, если убрать в начале "/", иначе выдает, что вызвана не объявленная функция. Но тогда другая проблема:

Fatal error: Cannot redeclare detect_browser_version() (previously declared in /var/www/home/.../useragent/useragent.php:7) in /var/www/home/.../useragent/useragent.php on line 60

Что он пытается переназначить, я не понял, т.к. 7 строка — это начало функции, а 60 — как раз-таки ее конец.
#12 Определение ОС и браузера пользователя 6 октября 2011 в 21:12

Тут все норм. Надо править саму функцию к которой обращаешься:
— получить аргумент в начале
— вернуть результат в конце

Max
Не понял. У меня же аргумент передается в скобках. И значение функции возвращается.
#13 Определение ОС и браузера пользователя 6 октября 2011 в 20:39

Возможно лучше править не model.php а frontend.php там где формируются массивы для передачи шаблону.

Max
Там я пытался править, но правки не вносят никаких изменений, не знаю почему.

detect_browser_version — это не та функция что нужна(она стоит в общей цепочке в середине и всего-лишь определят номер версии браузера.
Тебе нужна display_useragent

Max
Да я в курсе, я же и писал, что "хотя бы" эту функцию, если уж в другой, возможно, присутствует ошибка. Я даже пытался в model.php воткнуть тупо функцию test(), возвращающую "123", и в фукнции getComments вызвать функцию test(). Не получается.

Я уже потерял суть, что конкретно не получается.

Max
Смотри. Мне нужно сейчас подключить useragent.php и прогнать через него $comment['useragent']. Вот, что я делаю:

  1. public function getComments($target, $target_id, $cfg){
  2.  
  3. $comments = array();
  4.  
  5. if (!$cfg['edit_minutes']) { $cfg['edit_minutes'] = 0; }
  6.  
  7. $sql = "SELECT c.*,
  8. IFNULL(v.total_rating, 0) as votes,
  9. IFNULL(u.nickname, 0) as nickname,
  10. IFNULL(u.login, 0) as login,
  11. IFNULL(c.useragent, 0) as useragent,
  12. IFNULL(u.is_deleted, 0) as is_deleted,
  13. IFNULL(p.imageurl, 0) as imageurl,
  14. (NOW() < DATE_ADD(c.pubdate, INTERVAL {$cfg['edit_minutes']} MINUTE)) as is_editable
  15. FROM cms_comments c
  16. LEFT JOIN cms_ratings_total v ON v.item_id = c.id AND v.target = 'comment'
  17. LEFT JOIN cms_users u ON u.id = c.user_id
  18. LEFT JOIN cms_user_profiles p ON p.user_id = u.id
  19. WHERE c.target='$target' AND c.target_id=$target_id AND c.published=1
  20. ORDER BY c.pubdate ASC";
  21.  
  22. $result = $this->inDB->query($sql);
  23.  
  24. if (!$this->inDB->num_rows($result)) { return false; }
  25.  
  26. while($comment = $this->inDB->fetch_assoc($result)){
  27. $comment['fpubdate'] = cmsCore::dateFormat($comment['pubdate'], true, true);
  28.  
  29. // include('/useragent/useragent.php');
  30. // $comment['useragent'] = detect_browser_version($comment['useragent']);
  31.  
  32.  
  33. $comments[] = $comment;
  34. }
  35.  
  36. $comments = cmsCore::callEvent('GET_COMMENTS', $comments);
  37.  
  38. return $comments;
  39.  
  40. }
Смотри закомментированные строчки. Заинклудить пытался и вне описания функции, толку 0. ЧЯДНТ?
#14 Определение ОС и браузера пользователя 6 октября 2011 в 17:55

Представь страницу с сотней комментов.
Для каждого коммента, при каждом просмотре придется вычислять то что можно получить 1 раз и потом просто брать с базы. Зачем же делать 100 разборов строки если можно сделать 1 ?

Max
А если захочешь в будущем изменить стиль вывода или картинку заменить, всю базу будешь перелопачивать? Тем более, что там уже давно ведется запись именно строки юзерагента. В Wordpress плагин брал данные из БД, нормально.
P.S. Может, я все-таки не там пытаюсь делать? Может, в компоненте надо, а не в модуле?

UPD1: Я дурак. {$comment.useragent} в шаблоне как раз берет данные сразу из БД, и то, что там в модуле понаписано, его вообще не волнует, из модуля правки убрал, они не нужны. Буду копать компонент.

UPD2: При изменении компонента, в шаблоне ничего не изменяется, хотя кеш чистил. Вообще без понятия, что я не так делаю, но структура Инстанта для меня — это темный лес.

UPD3: Нашел, что нужно править функцию public function getComments($target, $target_id, $cfg) в /components/comments/model.php. В цикле while($comment = $this->inDB->fetch_assoc($result)) если вставить $comment['useragent'] = "123", то во всех комментариях будет выводиться уже не строка юзерагента, а 123. Вот только не могу подключить useragent.php так, чтобы потом вызывалась функция из него, хотя бы detect_browser_version($comment['useragent']).
#15 Определение ОС и браузера пользователя 6 октября 2011 в 17:34
Эм… не понял. В БД то зачем записывать строку для вывода картинок? В БД как раз хранится строка юзерагента. А уже разбирая ее нужно вывести картинки.
Вот модуль комментариев: pastebin.com/5m3Xqi8C
Там я пытаюсь заинклудить скрипт и вызвать функцию. Но таким способом не получается. Даже если я задам так:

$useragent_title=$con['useragent'];
$con['useragent']="123";

то будет выведена все равно строка с юзерагентом, а не "123". ЧЯДНТ?
Пробовал и global $useragent_title=$con['useragent'];
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.