Азбука/Знакомства

Материал из Etersoft wiki
Версия от 13:47, 9 ноября 2012; ВиталийЛипатов (обсуждение | вклад) (9 версий)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигацииПерейти к поиску

Служба Знакомств

Проблемы

Некэшированный внешний запрос

При обращении к страницам знакомств идёт обращение к http://azbyka.ru/forum/blog_external.php?bloguserid=727 причём без кэширования.

Эта ссылка встречается в следующих файлах:

modules/news/_dnevnik.php:      $url_rss = "http://azbyka.ru/forum/blog_external.php?bloguserid=727";
modules/news/comment.php:       $url_rss = "http://azbyka.ru/forum/blog_external.php?bloguserid=727";
modules/news/dnevnik.php:       $url_rss = "http://azbyka.ru/forum/blog_external.php?bloguserid=727";
modules/news/dnevnik2-17.php:   $url_rss = "http://azbyka.ru/forum/blog_external.php?bloguserid=727";
modules/news/izb.php:   $url_rss = "http://azbyka.ru/forum/blog_external.php?bloguserid=727";
modules/news/my.php:    $url_rss = "http://azbyka.ru/forum/blog_external.php?bloguserid=727";
modules/news/search.php:        $url_rss = "http://azbyka.ru/forum/blog_external.php?bloguserid=727";

Что нужно сделать:

  1. . Код обращения к этому url_rss оставить только в одном файле, а не копировать по разным
  2. . Удалить лишние, неиспользуемые файлы
  3. . Применить для кэширования готовое решение Cache:Lite: http://pear.php.net/package/Cache_Lite/docs

Подобная история и с frss.php Остаётся неясным, пишется cache_rss.xml в frss/cache_rss.xml или прямо в /cache_rss.xml


Пропавший overlay.png

В style.css прописана загрузка /znakomstva/images/admin/overlay.png, но самого файла нет.

last.info и напоминания

В index.php проверяется last.info Было бы неплохо вынести это из главной страницы Знакомств (сейчас случайно выбранному человеку замедляется показ страницы путём отправки в это время писем для всех, кому пришло время напомнить).

Лучше сделать отдельным файлом, который вызывать по cron.

Использование opendir и readdir

В частности, для http://azbyka.ru/znakomstva/index.php?module=news&file=add вызывается файл /home/azbyka/www/azbyka.ru/znakomstva/modules/news/add.php в котором используется конструкция вида

$handle=@opendir($smiles_path);
while(false!==($file=@readdir($handle)))
{
}

Всё это недопустимо. Нельзя добавлять @. Нельзя не проверять $handle. Нельзя сравнивать результат readdir с false (и через ==). В итоге получаем бесконечный цикл. Я вроде уже раньше писал об этом. Это действо по замене смайликов должно быть функцией.

Запросы к базе

Запросы к базе без использования индексов.

Запрос FROM a_messenger_messages

К таблице azbyka_znakomstv кто-то делает запрос вида

SELECT * FROM a_messenger_messages WHERE
(fromid='23704' AND toid='35199' AND hide_from=0) OR
(toid='23704' AND fromid='35199' AND hide_to=0)
ORDER BY id DESC LIMIT 0,20;

Он выполняется более 3 секунд, что ненормально долго. Проблема в том, что индексы для таблицы совершенно не подходят для этого запроса.

Ситуация выглядит так:

# Query_time: 4.032949  Lock_time: 0.000051 Rows_sent: 3  Rows_examined: 2364018

Чтобы сделать запрос без использования кэша:

SELECT SQL_NO_CACHE
Запрос FROM a_dnevnik_comments
SELECT COUNT(DISTINCT did) FROM a_dnevnik_comments;
SELECT * FROM a_dnevnik_comments  GROUP BY did ORDER BY data DESC  LIMIT 10770,30;
Запрос FROM a_forum_topics_visits
SELECT COUNT(*) FROM a_forum_topics_visits WHERE tid='4683' AND data>'1337333621';
Запрос FROM a_dnevnik
SELECT COUNT(*) FROM a_dnevnik   WHERE hidden='0' AND no_comments='0'   AND uid NOT IN (21753);

Ссылки