@Farrien
Tell me who

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

У меня самописный движок. Есть своя реализация лайков.
Допустим, в теме на каждый коммент можно поставить определенный лайк и под комментом показываются.
a6IxJ76FUwc.jpg
Показываются они путем вызова функции при выполнении кода. Комментарии разворачиваются через while, и в каждом из них есть вызов функции для вывода всех лайков.

function FGgetLikes($loc = 2, $target) {
	global $pdo_db;
	$likes_count = $pdo_db->query("SELECT COUNT(*) FROM likes WHERE target_id='$target' AND like_location='$loc'")->fetch(PDO::FETCH_COLUMN);
	if ($likes_count > 0) {
		$likes = $pdo_db->query("SELECT * FROM likes WHERE target_id='$target' AND like_location='$loc' ORDER BY id ASC");
		while ($list = $likes->fetch(PDO::FETCH_ASSOC)) {
			$lt = $list[like_type];
			$like_type = '';
			switch ($lt) {
				case 1:
					$like_type = 'normal-like';
					break;
				case 2:
					$like_type = 'haha-like';
					break;
				case 3:
					$like_type = 'wow-like';
					break;
				case 4:
					$like_type = 'love-like';
					break;
				case 5:
					$like_type = 'sad-like';
					break;
			}
			echo '<div class="like-pod '.$like_type.'"></div>';
		}
	} else {
		return;
	}
}


Такое сильно будет тормозить? Когда на каждом комментарии идет вызов этой функции. Если да, то есть другие пути осуществления подобного?
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
SagePtr
@SagePtr
Еда - это святое
Как минимум, функцию во внутреннем цикле переписать под подготовленные выражения, чтобы запрос каждый раз не парсился, а подставлялись только разные данные. Зачем отдельно вызывать запрос количества - тем более непонятно. Но вообще делать SQL-запросы в цикле - это моветон.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
Адок. За такое в приличных домах бьют подсвечниками
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽