Странно, но на хостинге то этот запрос выполнялся без проблем) А на VDS вот такие проблемы. Что ж, еще раз спасибо за подсказку о решении проблемы) Вопрос закрываю.Тут дело в запросе в базу, он сложный ...

del
Действительно, дело в этом. Вот только почему так? Я уже давно закрыл возможность комментирования для незарегистрированных, тем не менее, хотелось бы понять, почему такая фигня происходит.Как вариант попробуйте отключить "показывать комменты гостей", много кому помогает !
P.S. + тебе в карму.
Дык, ты на адрес то посмотри, ты открывал сайт, который сейчас на хостинге висит, а на вдс я его пока не перенес, работаю через правку /etc/hosts и временно сделал зеркало на поддомене beta.уууу у меня твой сайт ещё жоще работает 11.18сек)
А скорость интернета у меня 10 мбит/с.
Вот этого я и не могу понять, придется в код модуля смотреть.хотя как оно с запомнить меня связано, непонятно ..
Да.А наблюдается во всех браузерах ?
Не нашел, где он отключается, отключал помодульно, выяснил, что тормоза из-за "последних комментариев" в сайдбаре. Вопрос: почему без "запомнить меня" оно работает нормально, а с этой функцией — лагает?выключи и включи сайдбар
Без отметки "Запомнить меня"
С отметкой "Запомнить меня"
С отметкой "Запомнить меня", но без сайдбара
И судя по этому таймлайну, некоторое время ничего не грузится, просто "подвисает".
Может быть, на сервере не хватает какой-то библиотеки?
Если при авторизации поставить отметку "Запомнить меня", контент загружается быстро, а сайдбар секунды через 2 после всего остального. Если залогиниться без функции запоминания, все открывается одновременно и быстро.
Куда копать?
Понял. Только все равно ничего не получается. Тем более, что иногда обновление страницы происходит нормально, а иногда выдается Fatal error, описанная выше. Что за бред, вообще не понятно. Ладно, гиблое это дело. Для меня Ruby on Rails куда проще, чем это, уж не знаю почему…Той которой передаешь аргумент. В твоем примере кода — display_useragent, она же и должна вернуть значение.
Не понял. Какую функцию то? У меня их куча. 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 — как раз-таки ее конец.
Не понял. У меня же аргумент передается в скобках. И значение функции возвращается.Тут все норм. Надо править саму функцию к которой обращаешься:
— получить аргумент в начале
— вернуть результат в конце
Там я пытался править, но правки не вносят никаких изменений, не знаю почему.Возможно лучше править не model.php а frontend.php там где формируются массивы для передачи шаблону.
Да я в курсе, я же и писал, что "хотя бы" эту функцию, если уж в другой, возможно, присутствует ошибка. Я даже пытался в model.php воткнуть тупо функцию test(), возвращающую "123", и в фукнции getComments вызвать функцию test(). Не получается.detect_browser_version — это не та функция что нужна(она стоит в общей цепочке в середине и всего-лишь определят номер версии браузера.
Тебе нужна display_useragent
Смотри. Мне нужно сейчас подключить useragent.php и прогнать через него $comment['useragent']. Вот, что я делаю:Я уже потерял суть, что конкретно не получается.
public function getComments($target, $target_id, $cfg){ if (!$cfg['edit_minutes']) { $cfg['edit_minutes'] = 0; } $sql = "SELECT c.*, IFNULL(v.total_rating, 0) as votes, IFNULL(u.nickname, 0) as nickname, IFNULL(u.login, 0) as login, IFNULL(c.useragent, 0) as useragent, IFNULL(u.is_deleted, 0) as is_deleted, IFNULL(p.imageurl, 0) as imageurl, (NOW() < DATE_ADD(c.pubdate, INTERVAL {$cfg['edit_minutes']} MINUTE)) as is_editable FROM cms_comments c LEFT JOIN cms_ratings_total v ON v.item_id = c.id AND v.target = 'comment' LEFT JOIN cms_users u ON u.id = c.user_id LEFT JOIN cms_user_profiles p ON p.user_id = u.id WHERE c.target='$target' AND c.target_id=$target_id AND c.published=1 ORDER BY c.pubdate ASC"; $result = $this->inDB->query($sql); if (!$this->inDB->num_rows($result)) { return false; } while($comment = $this->inDB->fetch_assoc($result)){ $comment['fpubdate'] = cmsCore::dateFormat($comment['pubdate'], true, true); // include('/useragent/useragent.php'); // $comment['useragent'] = detect_browser_version($comment['useragent']); $comments[] = $comment; } $comments = cmsCore::callEvent('GET_COMMENTS', $comments); return $comments; }
А если захочешь в будущем изменить стиль вывода или картинку заменить, всю базу будешь перелопачивать? Тем более, что там уже давно ведется запись именно строки юзерагента. В Wordpress плагин брал данные из БД, нормально.Представь страницу с сотней комментов.
Для каждого коммента, при каждом просмотре придется вычислять то что можно получить 1 раз и потом просто брать с базы. Зачем же делать 100 разборов строки если можно сделать 1 ?
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']).
Вот модуль комментариев: pastebin.com/5m3Xqi8C
Там я пытаюсь заинклудить скрипт и вызвать функцию. Но таким способом не получается. Даже если я задам так:
$useragent_title=$con['useragent'];
$con['useragent']="123";
то будет выведена все равно строка с юзерагентом, а не "123". ЧЯДНТ?
Пробовал и global $useragent_title=$con['useragent'];