Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
vomittingius
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 9
1

Совет по оптимизации кода PHP

28.03.2013, 00:39. Просмотров 765. Ответов 13
Метки нет (Все метки)

Здравтвуйте, уважаемые пользователя форума, прошу вашего совета, по более коректному наисанию нижеследующего кода:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<? require "/header3.php";
$search_query = check_input($_REQUEST['query']);
$totalcount= 10000000000000000;
$limit = check_input($_REQUEST['limit']);
if ($limit == "") {
$limit = 100;
}
$limit2 = check_input($_REQUEST['limit2']);
if ($limit2 == "") {
$limit2 = 1000;
}
 
$start = check_input($_REQUEST['start']);
if ($start == "") {
$start = 0;
}
$displaystart = $start + 1;
$displayend = ($start + $limit > $totalcount ? $totalcount : $start + $limit);
if ($displayend == $totalcount) {
$nextset = 0;
} else 
$sort = check_input($_REQUEST['added']);
if ($sort == "") {
$sort = "added";
}
if ($search_query!="") {
$query = "select i.filename as filename, i.tn_filename as tn_filename, i.filepath as filepath, count( ih.filename ) as ctr from images i left outer join imagehits ih on i.filename = ih.filename where i.prv='0' and i.filename LIKE '%" . $search_query . "%' group by filename order by " . $sort . " desc limit " . $start . "," . $limit2;
}   
else {
$query = "select i.filename as filename, tn_filename, filepath, ih.filename as ctr from images i left join imagehits ih on i.filename = ih.filename where i.prv=0 group by filename order by " . $sort . " desc limit " . $start . "," . $limit;
}
$result = mysql_query($query) or die("Поиск происходит только на английском языке и цифрах.. / Search occurs only in English and figures. " );
$query_ti = "SELECT * from images where prv=0";
$result_ti = mysql_query($query_ti) or die("query_ti failed");
$totalimages = mysql_num_rows($result_ti);  
if ($totalcount>$totalimages) {
$totallimit=$totalimages; 
}
else {
$totallimit=$totalcount; }
if ($displayend>$totalimages) {
$displaylimit=$totalimages;
}
else {
$displaylimit=$displayend; }
if ($search_query!="") {
$totallimit=1000;
if ($displaylimit>$totallimit){$displaylimit=$totallimit;}
}
?>
Очень интересует вот этот код
PHP
1
2
3
else {
$query = "select i.filename as filename, tn_filename, filepath, ih.filename as ctr from images i left join imagehits ih on i.filename = ih.filename where i.prv=0 group by filename order by " . $sort . " desc limit " . $start . "," . $limit;
}
При обработке очень напрягается Мускул, до 10 секунд, сделал анализ пишет PRV - темпрори, типо при каждом сканировании создается временный файл, хотелось узнать как можно организовать данный запрос по другому, база данных в MYISAM

Очень прошу помощи хотя бы совета, или наводку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2013, 00:39
Ответы с готовыми решениями:

Как оптимально (с точки зрения безопасности и оптимизации кода) организовать подключение к БД
Здравствуйте. Пытаюсь сделать некий сайт, контент большинства страниц которого...

PHP обфускатор для защиты php кода
Интересно кто чем пользуется? Есть ли хорощие бесплатные PHP обфускаторы? Не...

HTML+PHP+форма. Нужен совет.
Есть обычная HTML форма, для добавления продукта. В ней есть много полей:...

нужен совет -два скрипта касательно php, ajax,jquery
всем доброе время суток, возникла проблема нужен совет в этой странице с...

нужен совет. на php ещё не писал, тольлько на javascript немного
здравствуйте, нужен совет. на php ещё не писал, тольлько на javascript...

13
crautcher
2019 / 1991 / 463
Регистрация: 27.05.2011
Сообщений: 6,837
28.03.2013, 14:51 2
индексы повесь
1
vomittingius
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 9
28.03.2013, 15:50  [ТС] 3
Цитата Сообщение от crautcher Посмотреть сообщение
индексы повесь
Подскажите как это сделать ? Очень вас прошу.
0
crautcher
2019 / 1991 / 463
Регистрация: 27.05.2011
Сообщений: 6,837
28.03.2013, 16:06 4
MySQL
1
ALTER TABLE `table_name` ADD INDEX indexname ( fieldname )
на поля по которым сортируешь или групируешь
1
vomittingius
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 9
28.03.2013, 16:29  [ТС] 5
Проставил индексы по всем таблицам, сечас приведу запрос и резултит EXPLAIN

Добавлено через 3 минуты
http://pikbox.ru/img/6/-477101036CrashBox.WS_2013_03_28.jpg

Индексы для строки PRV - PRV_2,PRV_3,PRV_4,PRV_5,

Поставил запрос все равно выполняется как то с треском можно сказать, 10 одновременных запросов уводят мускул в долгое задумывание ((
0
crautcher
2019 / 1991 / 463
Регистрация: 27.05.2011
Сообщений: 6,837
28.03.2013, 16:38 6
погоди , какие индексы у тебя стоят вообще ?
MySQL
1
SHOW INDEX FROM `tablename`
1
vomittingius
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 9
28.03.2013, 18:18  [ТС] 7
Вот по images таблице туда входит PRV

Добавлено через 1 час 30 минут
Ну как ? Без вариантов ? Не получается повысить производительность ни как, уже месяц бьюсь ( Если знаете подскажите пожалуйста!
0
Миниатюры
Совет по оптимизации кода PHP  
crautcher
2019 / 1991 / 463
Регистрация: 27.05.2011
Сообщений: 6,837
28.03.2013, 19:46 8
Если сделать кешовую таблицу и заносить туда данные раз в день/час , а затем весь день быстро дергать не покатит - важен риалтайм ?
0
vomittingius
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 9
28.03.2013, 20:28  [ТС] 9
Цитата Сообщение от crautcher Посмотреть сообщение
Если сделать кешовую таблицу и заносить туда данные раз в день/час , а затем весь день быстро дергать не покатит - важен риалтайм ?
Покатит но как это реализовать ?
0
casual_visitor
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
28.03.2013, 20:51 10
$totalcount= 10000000000000000; для начала убейте этого быдлокодера. После этого т.н. кода даже разбираться не хочется. Mysql - очень быстрая субд
0
vomittingius
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 9
28.03.2013, 21:31  [ТС] 11
Цитата Сообщение от casual_visitor Посмотреть сообщение
$totalcount= 10000000000000000; для начала убейте этого быдлокодера. После этого т.н. кода даже разбираться не хочется. Mysql - очень быстрая субд
Помогите дельным советом, как убрать не нарушив функционала, проект на грани распада из-за этого, потому как каждый день обработка все медленне и медленне скоро дойдет до 500 интернал сервер (((

Очень прошу откликнуться и дать несколько дельных советов.
0
casual_visitor
28.03.2013, 21:36
  #12

Не по теме:

ну как вам помочь.. это же проект... я без сарказма - требуется большая работа. А здесь на форуме можно получить быстрое и простое решение.. Наращивайте аппаратные возможности..$$$$

0
vomittingius
0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 9
28.03.2013, 22:47  [ТС] 13
Цитата Сообщение от casual_visitor Посмотреть сообщение

Не по теме:

ну как вам помочь.. это же проект... я без сарказма - требуется большая работа. А здесь на форуме можно получить быстрое и простое решение.. Наращивайте аппаратные возможности..$$$$

Понял, но сервер, вот такой:

Оперативная память - 8GB
Центральный процессор - 3100MHZ Quad 9400
Жёсткий диск - 8TB

Куда ещё наращивать, база данных всего 600 мб
0
casual_visitor
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
29.03.2013, 16:37 14
вы используете limit в запросах. на сколько я знаю mysql делает лимит в лоб:сначала выбирает вообще все, а потом отбрасывает все ненужное. при большом количестве записей это дело начинает дико тормозить... вот на хабре чел пытается бороться с этим

Добавлено через 13 минут
простейший вариант вместо limit использовать where по диапазону ключей.. Ключи не должны прерываться, иначе сложнее будет организовать получение одинакового количества строк в каждом запросе.. но скорость в любом случае возрастет на порядки
0
29.03.2013, 16:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2013, 16:37

Декодирование кода PHP
Здравствуйте. Пользуюсь Вордпрессом и решил установить плагин Автопостирования,...

Деобфускация PHP кода
Есть 2 обфусцированные php фала. Какой-то не хороший человек, в этих файлах,...

Аудит php-кода
Есть ли добрые люди которые на добровольных началах проведут аудит моего php...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru