Какой самый простой способ добавить кеш страницам (php)

A
На сайте с 12.10.2011
Offline
220
#21
Cpt.Smollet #:

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

Зашел в phpmyadmin:

set profiling=1;

show profiles;

Выдал: " MySQL вернула пустой результат (т.е. ноль строк). (Запрос занял 0.0002 сек.)"

Перед этим сделал запрос к странице, была задержка отображения секунд 10.

Я что-то не так сделал?

S3
На сайте с 29.03.2012
Offline
368
#22
alexverem #:

Зашел в phpmyadmin:

set profiling=1;

show profiles;

Выдал: " MySQL вернула пустой результат (т.е. ноль строк). (Запрос занял 0.0002 сек.)"

Перед этим сделал запрос к странице, была задержка отображения секунд 10.

Я что-то не так сделал?

скорее всего - все не так. Запрос в базу в пхпадмин идентичен запросу, который делает сайт?

WS
На сайте с 01.11.2008
Offline
161
#23
alexverem #:
Я что-то не так сделал?
да, профилирование показывает запросы в рамках текущей сессии, грубо говоря на сайте сессия одна, а вы смотрите в другой, поэтому и нет никакой инфы, надо либо скопировать запросы с сайта и выполнить их вручную в рамках профилирования, либо прописать запросы на профилирование внутри файла сайта работы с базой и записать результат в  файл, либо, чтобы узнать как выглядит запрос, если есть доступ к настройке mysql включить слоу лог и посмотреть запрос там: https://www.kobzarev.com/linux/mysql-slow-query-log/
Как включить лог медленных запросов в MySQL
Как включить лог медленных запросов в MySQL
  • www.kobzarev.com
Это, наверное, случалось с каждым — производительность MySQL на сайте внезапно сильно падала и вы не могли понять, по какой же причине это происходило. Скорее всего, виною этому служат неоптимизированные запросы. Чтобы их увидеть, достаточно включить лог медленных запросов MySQL. Чтобы включить лог медленных запросов, достаточно открыть...
E
На сайте с 01.10.2017
Offline
126
#24
alexverem #:
Я что-то не так сделал?

Первая ссылка в выдаче Яндекса по запросу "mysql profiling": https://habr.com/ru/articles/70435/

MySQL Profiler: простой и удобный инструмент профилирования запросов
MySQL Profiler: простой и удобный инструмент профилирования запросов
  • 2009.09.23
  • habr.com
Сегодня был неожиданно удивлен, какие удобные штуки таит в себе MySQL. ;-) Хочу представить вашему вниманию фичу MySQL — профайлинг. Появилась она начиная с версии 5.0.37. Всего парой запросов можно узнать, какими запросами формируется страница (для веб-девелоперов) и почему она тормозит. И раньше подобный функционал был доступен, но...
Домены на продажу: https://p20.ru/collection/domains-for-sale
A
На сайте с 12.10.2011
Offline
220
#25
WebStorm #:
да, профилирование показывает запросы в рамках текущей сессии, грубо говоря на сайте сессия одна, а вы смотрите в другой, поэтому и нет никакой инфы, надо либо скопировать запросы с сайта и выполнить их вручную в рамках профилирования, либо прописать запросы на профилирование внутри файла сайта работы с базой и записать результат в  файл, либо, чтобы узнать как выглядит запрос, если есть доступ к настройке mysql включить слоу лог и посмотреть запрос там: https://www.kobzarev.com/linux/mysql-slow-query-log/

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


/ Поключаемся к базе данных
$dbConn = new mysqli('localhost', 'user', 'password', 'dbname');
// Устанавливаем режим профайлинга
$dbConn->query('set profiling=1');
// Выполняем наш запрос
$dbConn->query('select * from goods');
$data_profile = $dbConn->query('show profiles');
// Получаем данные о профайлинге
$row = $data_profile->fetch_array();
// Отменяем режим профайлинга
$dbConn->query('set profiling=0');

// Выведем данные на экран
echo '<pre>';
print_r($row);
echo '</pre>';

// Получим время выполнения и строку sql-запроса
$duration = $row['Duration'];
$query = $row['Query'];

printf('Запрос: %s. Время выполнения - %s', $query, $duration);


Вот то что показало по выборке из самой большой таблицы, но тут я простой запрос сделал (выборка по ID). Надо поработать будет чтобы показало то что нужно..


    [0] => 1

    [Query_ID] => 1

    [1] => 0.00114473

    [Duration] => 0.00114473

M3
На сайте с 09.02.2022
Offline
107
#26
alexverem #:
'select * from goods'

только один запрос на весь сайт?)

E
На сайте с 01.10.2017
Offline
126
#27
master32 #:
только один запрос на весь сайт?)

Видимо, на большее не хватает 😀 Он и "show profiles" только сделал, т.е. найденную мной предельно короткую статью до конца не дочитал 😕

Хотя, может, специально нагрузить захотел. Правда, такой запрос совсем не на то, на что нужно, нагрузку дает.

WS
На сайте с 01.11.2008
Offline
161
#28
alexverem #:
Получается я должен внедрить в каждую страницу интересующую этот код и лог записывать?
да
E
На сайте с 01.10.2017
Offline
126
#29
alexverem #:
Получается я должен внедрить в каждую страницу интересующую этот код и лог записывать?

Вы не сами писали код? Не знаете последовательность запросов, выполняемых для конкретного типа страницы (конкретной страницы, если учитывать фактические данные, т.к. они тоже могут влиять на скорость выполнения запросов)?

По моей ссылке выше показан еще второй запрос "show profile from query 1" и т.п. Если будете использовать именно командную строку, то база данных выбирается при помощи запроса "use `db_name`".

Genius Ideaing
На сайте с 12.02.2024
Offline
96
#30
Leema #:
2) переходи на php 8.*

быстрее структурного программирования ничего нет

ООП для мега масштабируемых проектов и крутого железа

Дешёвый хостинг и домены: https://clck.ru/3FxXCa / Мощный хостинг: https://clck.ru/3DKmVu / Есть Идеи! Ищу хороших людей для реализации этих идей! Мой Telegram: https://clck.ru/396JFF

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий