- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 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>';
}
?>
Dart_Sergius 25.04.2014 12:07 # 0
- вынести работу с mysql в класс или функции
-убрать sleep, ибо он нафиг не нужен.
-и в AJAX возвращать чистый html код - это потенциальная брешь в безопасности.
bormand 25.04.2014 12:10 # +3
У меня в бекендовом демоне до сих пор стоят sleep(5), ибо без них все слишком быстро работает, и даже как-то некрасиво - не успеваешь разглядеть какие этапы проходят, и как вертится индикатор около текущего пункта ;(
bormand 25.04.2014 12:59 # 0
Dart_Sergius 25.04.2014 13:10 # 0
Ну это как я вижу этот мир.
bormand 25.04.2014 13:23 # +1
Ты так говоришь, как-будто sleep() его занимает ;)
Но да, эти sleep'ы стоит выпилить, чтобы юзеру меньше ждать приходилось.
WGH 25.04.2014 14:06 # +1
Но зато рабочий процесс/тред апача/php-fpm/etc. простаивает без дела, в то время как другие клиенты, возможно, ждут освобождения этого процесса.
bormand 25.04.2014 15:08 # 0
WGH 25.04.2014 15:26 # 0
bormand 25.04.2014 15:37 # 0
Если быть точным, то там такая схема:
1) Сам демон написан на змее, пыхоморда общается с ним через json, а аяксовые приблуды для индикации статуса - через пыхоморду
2) Воркер - внешний процесс, запущенный демоном, который по ходу работы передает ему список этапов с флажками done/active/pending и список ошибок/предупреждений. В него и воткнуты sleep'ы...
Оверинжиниринг детектед? :)
Небесплатность sleep'а признаю, и втыкание sleep'а "для красоты" всячески порицаю ;)
bormand 25.04.2014 13:01 # +8
eth0 25.04.2014 18:40 # +2
Больше прохладных советов, бро!
eth0 25.04.2014 18:36 # 0
tirinox 26.04.2014 21:36 # +6