Уточню: надо и часть 6 посмотреть с php и 7 c memcached? Или толко настройки memcached в 7й части? Дело осложняется тем, что там выкладки под *nix, а у меня wamp и так просто на него APC не запилишь. Я уж думаю, не бросить ли все и уехать на хостинг. Но, опасаюсь, имеющийся виртуальный хостинг не шибко будет круче.
Эм… Давайте разбираться. APC — это Alternative PHP Cache? Если стоит, то неочевидно для меня. XCache тоже вроде бы нигде не упоминается в конфиге. Сейчас тестирую на OpenServer: Apache/2.4.6, PHP 5.3.27, MySQL 5.5.33 (InnoDB), включен Memcached 1.4.5
php-fpm я надеюсь?
а как узнать точно? в phpinfo ни «fpm», ни «fastcgi» не употребляется.
Если у вас скажем такая страница генерируется 2 секунды, то база там будет занимать не больше 25% общего времени и даже если вы уберете базу в ноль — на общем времени генерации эффект не будет особо заметен.
Примерно понял. Но вот цифры-то поменялись? В конфиге уже был
innodb_flush_log_at_trx_commit = 2
Я добавил только
innodb_locks_unsafe_for_binlog = 1
и цифра общего времени упала до 1,6 сек.
Тогда вернулись с чего начинали, если это не БД, тогда что? Причем да, меня удивляло, что в цифрах в футере MysQL time: 0.109, Cache time: 0.14063, PHP time load modules: 1.125, а full time: 2.688. То есть, 0.109+0.14063+1.125 = 1.37463 != 2.688 Куда-то уходят еще 1.31337 сек.
И 1.125 сек на php на пустой странице? Это нормально?
(хоть смена типа не помогла, спрошу на будущее) А вот если бы с myisam работало бы быстрее, можно ли было разрабатывать на ней, а потом при переезде на хостинг конвертировать это все в innodb и продолжать работать?
Еще пишут, что разница в нагрузочных характеристиках проявляется уже при довольно высоких значениях кол-ва посетителей. Можно ли без проблем конвертировать базу при достижении этих чисел?
Отключал кеширование, и написал об этом в первом пункте (когда менял еще тип кеша). Не помогло. И вот только что еще раз перепроверил — то же самое.
Насчет InnoDB/MyISAM. Я просто попробовал варианты, которые нагуглил тут на сайте. Кому-то смена типа на myisam как раз помогла, хотя да, все говорят, что целостность-безопасность-итп.
Зачем что? Не все равно? Опасаюсь, что не правильно понял вопрос. Не все ли равно на время загрузки? Нет, не все равно. 2-7 секунд на загрузку любой, каждой (!) страницы. Это же сколько времени придется просидеть перед компом втупую ожидая загрузки. А при отладке, например, css — не мне вам рассказывать сколько раз приходится обновлять страницу.
Спасибо за ответ и ссылку, обязательно попробую, хоть даже в качестве исключения вариантов. Но все-таки интересно было бы узнать перед такой радикальной переменой сервера, неужели никто не отлаживает на локальных машинах и под виндой? Сразу на хостинг? Просто если эти цифры нормальны, тогда всё, хостинг/nginx. Но если нет — то значит что-то настроено не так.
Просто мысль про сквозную регистрацию в ЛС, если под другим углом посмотреть. Это ж получится такой распределенный ЖЖ, точнее, распределенные сообщества. Интересная, кстати, идея.
Если перед /head, то файл header.tpl и Header.light.tpl (или хук html_head_end), Файлы уникальны в шаблоне — какой шаблон используете, в том и правьте.
избыточен, ибо просто добавляет класс к элементу при соответствующем значении переменной, полученной (assign, если правильно понимаю) из скрипта. А скрипта-то (экшена системы) по указанному адресу может и не быть.
Выше я указал не совсем правильный путь. Чтобы сделать вывод топиков, а не комментов, надо маленько порыться в коде. В этом комменте более подробно: livestreet.ru/blog/7245.html#comment105194
Теперь у нас пропала кнопка с комментами, но они по-прежнему грузятся в эфире. Идем дальше. В этом же файле ищем 24-ю строку с надписью
{$sStreamComments}
Меняем ее на
{$sStreamTopic}
Теперь, откуда же нам взять эту самую sStreamTopic?
Идем в файл \classes\blocks\BlockStream.class.php
И видим там следующее:
class BlockStream extends Block {
public function Exec() {
if ($aComments=$this->Comment_GetCommentsOnline('topic',Config::Get('block.stream.row'))) {
$this->Viewer_Assign('aComments',$aComments);
$sTextResult=$this->Viewer_Fetch("block.stream_comment.tpl");
$this->Viewer_Assign('sStreamComments',$sTextResult);
}
}
}
Путем нехитрых манипуляций (метод мультметра, сравнение файлов \include\ajax\stream_topic.php и \include\ajax\stream_comments.php) переназначаем в указанном файле переменные для шаблона. Приходим к
class BlockStream extends Block {
public function Exec() {
if ($oTopic=$this->Topic_GetTopicsLast(Config::Get('block.stream.row'))) {
$this->Viewer_Assign('oTopics',$oTopic);
$sTextResult=$this->Viewer_Fetch("block.stream_topic.tpl");
$this->Viewer_Assign('sStreamTopic',$sTextResult);
}
}
}
В итоге остается одна кнопка («Публикации»), которую неплохо бы переоформить (она же придумана как переключатель, а теперь переключать нечего), и при нажатии на которую обновляется поток топиков.
а как узнать точно? в phpinfo ни «fpm», ни «fastcgi» не употребляется.
И, кстати, все равно 0.04688 > 0.
И все равно, около секунды куда-то уходит, помимо перечисляемых потребителей.
Я добавил только и цифра общего времени упала до 1,6 сек.
Тогда вернулись с чего начинали, если это не БД, тогда что? Причем да, меня удивляло, что в цифрах в футере MysQL time: 0.109, Cache time: 0.14063, PHP time load modules: 1.125, а full time: 2.688. То есть, 0.109+0.14063+1.125 = 1.37463 != 2.688 Куда-то уходят еще 1.31337 сек.
И 1.125 сек на php на пустой странице? Это нормально?
Еще пишут, что разница в нагрузочных характеристиках проявляется уже при довольно высоких значениях кол-ва посетителей. Можно ли без проблем конвертировать базу при достижении этих чисел?
Стали появляться цифры 1,6-2,1 вместо 2,1-2,6 но на некоторых страницах все равно вылетает и 4,6. Но 1,6 уже лучше (:
Вот весь конфиг innodb:
Насчет InnoDB/MyISAM. Я просто попробовал варианты, которые нагуглил тут на сайте. Кому-то смена типа на myisam как раз помогла, хотя да, все говорят, что целостность-безопасность-итп.
По-хорошему, можно написать плагин, который вставляет код статистики перед </body>, повесив его на хук template_body_end.
По-простому, можно отредактировать файл шаблона footer.tpl.
Он найдет вам языковые файлы russian.php и english.php, где эта строка присваивается переменной, как указано комментом выше:
Повторяете процедуру, но теперь ищете, где используется сама переменная topic_link_create_url_notice. Находятся два файла, кроме уже найденных.
Файл templates\skin\%skin_title%\actions\ActionLink\add.tpl
Строки 50 для new и 53 для developer:
избыточен, ибо просто добавляет класс к элементу при соответствующем значении переменной, полученной (assign, если правильно понимаю) из скрипта. А скрипта-то (экшена системы) по указанному адресу может и не быть.
Тогда предложу вот так, т.к. проверил и работает, но объяснить толково последний этап не смогу. Найдено методом мультиметра.
Итак, идем в файл шаблона: \templates\skin\new\block.stream.tpl
Комментируем десятую строку (ну или удаляем ее), вот эту:
Теперь у нас пропала кнопка с комментами, но они по-прежнему грузятся в эфире. Идем дальше. В этом же файле ищем 24-ю строку с надписью
Меняем ее на
Теперь, откуда же нам взять эту самую sStreamTopic?
Идем в файл \classes\blocks\BlockStream.class.php
И видим там следующее:
Путем нехитрых манипуляций (метод мультметра, сравнение файлов \include\ajax\stream_topic.php и \include\ajax\stream_comments.php) переназначаем в указанном файле переменные для шаблона. Приходим к
В итоге остается одна кнопка («Публикации»), которую неплохо бы переоформить (она же придумана как переключатель, а теперь переключать нечего), и при нажатии на которую обновляется поток топиков.