"PHP" / Говнокод #15845 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
<?php
	require_once("inc/mysql.php");
	sleep(3); //Для ajax запроса, потом удалить

	// Проверяем, что к нам идёт Ajax запрос
	if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
		$city1 = $_POST['city1'];
	}else{
		exit(); // Заканчиваем работу скрипта, если это не ajax запрос
	}

	if (isset($city1)) {
		$query = "SELECT id_city, id_region, id_country FROM cities WHERE city_name_ru LIKE '$city1'";
		$result = mysqli_query($link, $query);// or trigger_error(mysql_error($link)." ".$query);
		$row = mysqli_fetch_array($result);
		$country = $row['id_country'];
		//echo $country;
		//echo '<br>';
		$region = $row['id_region'];
		//echo $region;
		//echo '<br>';
		$query1 = "SELECT country_name_ru FROM countries WHERE id_country = '$country'";
		$result1 = mysqli_query($link, $query1);// or trigger_error(mysql_error($link)." ".$query);
		$row1 = mysqli_fetch_array($result1);
		echo '<p class=\'country\'>Страна '.$row1['0'].'</p>';
		//echo '<br>';
		$query2 = "SELECT region_name_ru FROM regions WHERE id_region = '$region'";
		$result2 = mysqli_query($link, $query2);// or trigger_error(mysql_error($link)." ".$query);
		$row2 = mysqli_fetch_array($result2);
		echo '<p class=\'reqion\'>Область '.$row2['0'].'</p>';
	}
?>

Прокомментируйте, пожалуйста, как улучшить этот говнокод.

Запостил: eprivalov1 eprivalov1, (Updated )

Комментарии (13) RSS

  • ИМХО :
    - вынести работу с mysql в класс или функции
    -убрать sleep, ибо он нафиг не нужен.
    -и в AJAX возвращать чистый html код - это потенциальная брешь в безопасности.
    Ответить
    • > убрать sleep, ибо он нафиг не нужен
      У меня в бекендовом демоне до сих пор стоят sleep(5), ибо без них все слишком быстро работает, и даже как-то некрасиво - не успеваешь разглядеть какие этапы проходят, и как вертится индикатор около текущего пункта ;(
      Ответить
      • P.S. Ну правда там sleep() в воркере, а не во время обработки ajax-запроса 🙂 Так что код ОП'а поговнистей будет.
        Ответить
        • ИМХО - задержка, дело не серверной части, это уже клиентская часть, для нашего удобства. А обработка на сервере должна проходить максимально быстро, и лишний раз не занимать процессорное время.
          Ну это как я вижу этот мир.
          Ответить
          • > занимать процессорное время
            Ты так говоришь, как-будто sleep() его занимает 😉

            Но да, эти sleep'ы стоит выпилить, чтобы юзеру меньше ждать приходилось.
            Ответить
            • > Ты так говоришь, как-будто sleep() его занимает 😉
              Но зато рабочий процесс/тред апача/php-fpm/etc. простаивает без дела, в то время как другие клиенты, возможно, ждут освобождения этого процесса.
              Ответить
              • Ну если доебаться к словам - это уже не процессорное время, а wall clock (как это красиво сказать по-русски?).
                Ответить
                • Я и не говорю, что это процессорное время. Я лишь хочу сказать, что висящий на sleep процесс PHP - это отнюдь не бесплатно.
                  Ответить
                  • > висящий на sleep процесс PHP
                    Если быть точным, то там такая схема:
                    1) Сам демон написан на змее, пыхоморда общается с ним через json, а аяксовые приблуды для индикации статуса - через пыхоморду
                    2) Воркер - внешний процесс, запущенный демоном, который по ходу работы передает ему список этапов с флажками done/active/pending и список ошибок/предупреждений. В него и воткнуты sleep'ы...

                    Оверинжиниринг детектед? 🙂

                    Небесплатность sleep'а признаю, и втыкание sleep'а "для красоты" всячески порицаю 😉
                    Ответить
      • А потом можно будет вырезать эти sleep'ы и писать в чейнжлоге - существенно ускорена работа таких-то операций.
        Ответить
    • Это всё равно что посоветовать экономить на спичках, хотя тут вовсю инъекция хлещет, три запроса вместо джойнов и стиль вмазанного овоща.
      Больше прохладных советов, бро!
      Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8