Сильно ли нагружает такой поиск по таблице БД?

123 4
P
На сайте с 06.01.2009
Offline
592
1742

Ребят, привет.

Вообщем на сайте стали выпадать страницы товаров из индекса Яндекса. В вебмастере страницы в списке исключенных с ошибкой 404. Проверял их на ответ сервера, все нормально 200 ОК, пользователи с сайта звонят и спрашивают про товар, причем со страницы, которая якобы 404.

Начал думать, в чем проблема. Может ли быть проблема в таком обработчике таблицы товаров?

Вот таблица, в таблице 9000 товаров.

[ATTACH]138331[/ATTACH]

обработчик (скрипт) работает так.


$result = mysql_query("SELECT id FROM tovar WHERE url='$tekurl' AND urlstranizi!='' LIMIT 1");
$vsego = mysql_num_rows($result);
if ($vsego>0) {$sranizaest=1;}

ps приношу свои извинения, если кому то данный скрипт покажется глупым, но я не программер, я на любительском уровне знаю php и БД.

Если есть более грамотное решение, буду рад ео увидеть.

Но, сейчас вопрос - не может ли быть вызвана отдача ЯНдексу ответа 404 именно по причине, что хост начинает "ложиться" из за такого скрипта.

ps в аккаунте хостера нет проблем, превышения нагрузки нет, сам хостер подтвердил что по аккаунту все в порядке.

jpg 138331.jpg
siv1987
На сайте с 02.04.2009
Offline
427
#1

Не может. Да и падание сервера 404 ошибку не выдает.

ДП
На сайте с 23.11.2009
Offline
203
#2

Возьмите запрос с реальными данными и выполните его в phpMyAdmin и посмотрите сколько он выполняется по времени. Лучше в моменты, когда на сайте максимальное количество посетителей.

Если работает медленно - может помочь выставление индексов по полям в условии, но при этом будет замедляться вставка и редактирование данных в БД.

---------- Добавлено 29.10.2014 в 21:55 ----------

siv1987:
Не может. Да и падание сервера 404 ошибку не выдает.

Да кто знает как в движке обрабатываются ошибки, может там и 404 выдается, если запрос какой-нибудь не прошел. Ну т.е. это конечно маловероятно, но не исключено.

P
На сайте с 06.01.2009
Offline
592
#3

Сейчас взял тупо список страниц, 1900 урлов, которые Яндекс причислил к 404 ошибке и гоню через скрипт


function check_http_status($url)
{
$user_agent = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$page = curl_exec($ch);

$err = curl_error($ch);
if (!empty($err))
return $err;

$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $httpcode;
}





$uri - поочередно урлы из списка Яндекса.
цикл
{
$url = "http://www.site.ru$uri";
$answer = check_http_status($url);
if ($answer===200) { echo "<br>$x|OK=$uri"; }
else { echo "404=$uri";}
}
ДП
На сайте с 23.11.2009
Offline
203
#4

А access_log что говорит про коды ответа сервера?

P
На сайте с 06.01.2009
Offline
592
#5
Дикий пионер:
Возьмите запрос с реальными данными и выполните его в phpMyAdmin и посмотрите сколько он выполняется по времени.

Вбить в строку поиска url нужный урл?


Запрос занял 0.0098 сек



---------- Post added 29-10-2014 at 23:18 ----------

Дикий пионер:
А access_log что говорит про коды ответа сервера?

Я, к сожалению, пока не разобрался как его смотреть.

---------- Post added 29-10-2014 at 23:20 ----------

Дикий пионер:
Если работает медленно - может помочь выставление индексов по полям в условии, но при этом будет замедляться вставка и редактирование данных в БД.

Есть вариант, делить $tekul на "-" , получать имя производителя и в БД искать есть ли урл среди указанного производителя. Но не знаю, будет ли быстрее. ps уже попробовал, это ухудшает скорость, т.к. к таблице обращается ещё раз если по proizvoditel не идентифицировал.


$tekurl = "laminat-balterio-kosbi-eco-wood";
// определим через explode
$proizvoditel = balterio;
$result = mysql_query("SELECT id FROM tovar WHERE proizvoditel='$proizvoditel' AND url='$tekurl' AND urlstranizi!='' LIMIT 1");



---------- Post added 29-10-2014 at 23:32 ----------

Сделал ещё один финт ушами.

Взял список 1300 урлов, и все их скриптом проверил на присутствие в таблице БД.

1300 урлов проверил за 7 сек., 1000 урлов за 4,9сек. Но я не знаю это быстро или нет.

ДП
На сайте с 23.11.2009
Offline
203
#6
postavkin:
Вбить в строку поиска url нужный урл?

Нет, вот в этот запрос

SELECT id FROM tovar WHERE url='$tekurl' AND urlstranizi!='' LIMIT 1

подставьте реальные значения переменных и выполните его и время посмотрите.

postavkin:

Я, к сожалению, пока не разобрался как его смотреть.

Это обычный текстовый файл. Можно просто текстовым редактором, который сможет его открыть, потому что они как правило очень большие. Есть парсеры, которые позволяют получать информацию из этих логов в структурированном виде - но тут я что-то посоветовать не могу.

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#7

У Яндекса может быть обычный глюк, а тут столько уже расписали.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
P
На сайте с 06.01.2009
Offline
592
#8

Ребят, вроде нашел проблему. Она в названии урла.

Все урлы которые выпадают содержат "," ?

Может быть в этом причина?

Улы


site.ru/tovar/laminat-balterio-kosbi-eco-wood-10,5x90
site.ru/tovar/laminat-balterio-kosbi-eco-wood-20,5x90,5

и вот в логах


/tovar/laminat-balterio-kosbi-eco-wood-10?5x90 HTTP/1.0" 404 4502 "-" "Mozilla/5.0 (compatible; YandexBot/3.0;
/tovar/laminat-balterio-kosbi-eco-wood-20?5x90&,5 HTTP/1.0" 404 4502 "-" "Mozilla/5.0 (compatible; YandexBot/3.0;



---------- Post added 30-10-2014 at 00:17 ----------

LEOnidUKG:
У Яндекса может быть обычный глюк, а тут столько уже расписали.

Леонид, я был бы не против глюка, если бы начиная с конца сентября не начали выпадать страницы. Сперва 300, потом ещё 500, теперь дошло до 1900 урлов товаров.

Mad_Man
На сайте с 10.11.2008
Offline
162
#9
postavkin:
Может быть в этом причина?

Запятые в урле должны быть записаны как "%2C". Экранируйте спецсимволы и будет счастье.

VHS
На сайте с 28.09.2007
Offline
142
VHS
#10

На картинке из старт-поста очень нравится третья строчка и четвертая буква справа в урле. С огромной долей вероятности она будет преобразована к "?"

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий