@Jony1337

Как вы бы ускорили этот php код?

Привет
Я только начинаю свой путь так что не судите строго , делаю разные сайты для обучения , вот что набросал сегодня :
<?
header("Content-Type: text/html; charset=UTF-8");
$db = mysql_connect("localhost","db79","password");
mysql_select_db("d_lx",$db);
mysql_query("SET NAMES utf8");
$result = mysql_query("SELECT * FROM videoByMe", $db);
$num_rows = mysql_num_rows($result);
$idVideo1 = rand (3,$num_rows);
?>
<!DOCTYPE HTML>
<html>
 <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <html lang="ro">
  <title>All Video</title>
  <link rel="stylesheet" href="http://site.com/style/bats.css">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
  <script src="http://www.site.ru/player6/jwplayer.js"></script>
 </head>
<body>

	<div class="header">
	<div class="inner-header">
		<a href="#"><img src="http://site.com/image/logo.png" style="width: 70px; margin-bottom: 5px; float: left;">
		<a href="#" class="menu">
			Home
		</a>
		<div class="vertical-line"></div>
		<a href="#" class="menu">
			Reg
		</a>
		<div class="vertical-line"></div>
		<a href="#" class="menu">
			Add video
		</a>
	</div>
</div>
<?
for ($i = 3; $i <= $num_rows; $i++) {
$resultat = mysql_query("SELECT * FROM `videoByMe` WHERE `id` = $i",$db);
$data = mysql_fetch_array($resultat);
$nameVideo = $data['DenumireaVideo'];
$IdvideoMIX = $data['VideoMixID'];
$linkToImage = $data['linkPoza'];
echo '<a href="index.php?id='.$i.'" style="color: #333; text-decoration: none;">
	<div class="videos">
		<img src="'.$linkToImage.'" style="width: 285px; height: 150px;">
		<div style="font-size: 16px; margin-top: 5px; font-weight: bolder;">'.$nameVideo.'</div>
	</div>
</a>';
}
mysql_close($db);
?>		
			</div>
		</div>
	</div>

 </body>
 </html>

Как видно из кода выводится из базы данных на страничку всё видео , вернее ссылка на изображение , ссылка к видео и названия видео .
Но код хромает , долго грузится страничка , некоторый фото не показывает .
  • Вопрос задан
  • 362 просмотра
Пригласить эксперта
Ответы на вопрос 4
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Почитайте чего на тему разделения ответственности

Так же если вы считаете что "страничка медленно загружается" - надо профилировать.

1. На уровне браузера - просто в дебагере посмотрите что именно медленно грузится. Возможно медленно скачиваются сами картинки.
2. На уровне страницы - возможно сервер далеко расположен. А может страничка медленно генерится.
3. На уровне PHP - есть отдельные профайлеры, начать можно тупо с логирования времени выполнения отдельных кусков кода. Заканчиваем специализированными инструментами вроде blackfire.io.
Ответ написан
Комментировать
Adamos
@Adamos
Не стоит тратить свою юность на mysql_ - функции. Они мало того, что ужасны, так еще и устарели.
Пока вам не требуется сложная работа с базой, можно пожить, например, с SafeMySQL. Это, конечно, не панацея и в перспективе вообще тупик, но по сравнению со спагетти из функций - радость и благорастворение воздухов.

Не стоит мешать код и верстку. Рано или поздно все равно дойдете до их разделения, лучше рано. Сначала весь PHP: подготовьте все данные, которые будут выведены. Потом пошла страница с минимальными вставками уже подготовленных данных. Максимум допустимой логики - вывод данных в цикле.

Если у вас тяжелые внешние ссылки, сделайте ленивую загрузку. Хотя бы элементарно - выводите страницу со всей версткой, но без конкретики, а в конце пишите javascript, который назначает конкретным картинкам конкретные src. Это несложно, правда. Впрочем, если для этого познакомиться хотя бы и с общеизвестным JQuery, все станет еще проще...
Ответ написан
Комментировать
romy4
@romy4
Exception handler
этот код и так быстр. но такую кашу очень трудно поддерживать на проектах. поэтому используйте принципы SOLID и применяйте грамотно шаблоны проектирования
Ответ написан
Rou1997
@Rou1997
Загружать сразу все видео из таблицы точно не стоит, постранично надо или с бесконечными "Показать еще", и главное зачем на каждое видео делать SELECT-запрос, достаточно всего одного, а дальше просто итерация (цикл) по всем строкам.

некоторый фото не показывает .

Это скорее в базе проблема, отлаживайте.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы