(Добавление) Мелкий, твоя тоже работает. Спасибо! (Добавление) Tyoma5891, не strip_tags() не пойдет, мне же не весь html почикать нужно, а только удалить гребаный кулхацкерный js, который рекламой всю страницу залепляет.
Пардоньте друзья! Все в порядке! Это оказывается мой клиент СУБД так тормозит, хотя я пользовался функцией профилировки запросов в нем. В частности клиент называется dbForge Studio fo MySQL, удобный и няшный, но тупит оказывается.
Сейчас проверил те же самые запросы через консоль и вуаля, запрос по УРЛу занимает 0,02 c., запрос по id 0,00 c., запрос по crc32 хэшу 0.00 c.
Сами полюбуйтесь:
mysql> SELECT * FROM ***.crawler WHERE id = 2145 LIMIT 1;
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| id | url | visit_date | html | crc32_hash |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| 2145 | http://site[dot]com/news/chempionat_[dot][dot][dot]/2014-03-22-8846 | 0000-00-00 00:00:00 | | 3191665859 |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
1 row in set (0,00 sec)
mysql> SELECT * FROM ***.crawler WHERE url = "http://site.com/news/chempionat_rossii_2013_14_22_j_tur_razogrev_22_03_2014/2014-03-22-8846" LIMIT 1;
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| id | url | visit_date | html | crc32_hash |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| 2145 | http://site[dot]com/news/chempionat_[dot][dot][dot]/2014-03-22-8846 | 0000-00-00 00:00:00 | | 3191665859 |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
1 row in set (0,02 sec)
mysql> SELECT * FROM ***.crawler WHERE crc32_hash = 3191665859 LIMIT 1;
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| id | url | visit_date | html | crc32_hash |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| 2145 | http://site[dot]com/news/chempionat_[dot][dot][dot]/2014-03-22-8846 | 0000-00-00 00:00:00 | | 3191665859 |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
1 row in set (0,00 sec)
отдельное спасибо пользователю tuareg, именно он посчитал странным столь долгую выборку по primary_key [b]id[/b].
Мораль сей басни такова, меряйте скорость выполнения запросов mysql непосредственно из консоли mysql, а не сторонним говнософтом расположенным на расстоянии в 4-5к км от сервера!..
Вот explain запроса:
id - 1
select_type - SIMPLE
table - crawler
type - const
possible_keys - UK_crawler_crc32_has
key - UK_crawler_crc32_has
key_len - 8
ref - const
rows - 1
Extra - null
P.S.
Если выбирать по id записи, скорость такая же, в среднем 0.8 с.
Вот как щас таблица выглядит:
В общем, сделал еще 2 поля одно с md5, а другое с crc32 хэшами урлов, прироста в скорости никакой. Стал на хостера грешить, потому как ранее с ним не работал, дампанул базу на сервер digitalocean'a где все наши проекты крутятся, один хер, скорость выборки не изменилась, прямо печалька какая-то, скорость выборки:
crc32 = Запрос открыт за 1,254c [0,385c выполнение, 0,869c выборка]
Кстати говоря, раньше быстрее было, пока еще 2 столбца не добавил, и спрашивал по текстовому полю:
Запрос открыт за 0,652[0,285 выполнение, 0,367 выполнение]
Мне бы добиться общего времени работы запроса хотя бы до 0,3 сек, было бы просто шоколадно, тогда страница отлетала бы в nginx за полсекунды, но увы и ах
Да, url уникальный. Сейчас попробовал сделать его первичным ключом таблицы, один фиг, оно наоборот еще медленнее стало. (Добавление)
Перевел таблицу в MYISAM, сделал полнотекстовый индекс для этого поля длиной 255 символов итог: никакого прироста в скорости выборки.
Имеется таблица: id, url, html. В url хранятся урлы вида "http://site.com/news/bla-bla-bla/bla-bla/bla". А в столбце html соответвенно html код запрашиваемого урла. Сейчас в таблице чуть более 10 000 записей, и уже сейчас выборка типа SELECT * FROM crawler WHERE url = 'http://site.com/bla-bla/bla-bla/bla'; занимает пол секунды, а т.к. этот запрос происходит при получении любого url, в целом это влияет на загрузку любой страницы (не важно со старой версии сайта она или с новой). В итоге, имею почти секундную задержку до получения контента.
но к каким либо заметным результатам это не привело. Что я делаю не так и как мне ускорить выборку по текстовому полю такой длинны какую обычно имеют современные модные многоуровневые ЧПУ УРЛы?
Заранее спасибо за идеи!
Если же обычную форму в этот файл послать, то все нормально работает и$_POST содержит то что ему послали. Видимо что-то в конфиге моего cURL не то, а вот что именно, не могу понять. Пересмотрел уже кучу примеров в инете, все одно и тоже, разные заголовки ставил, без толку. Что я делаю не так?
(Добавление)
Oh yeah, baby!!! Я что-то получил, json посредством:
Sphinx поставил, sphinxclient пекл подключил, работает на ура. Осталось только "поработать напильником" так сказать. Собственно в чем у меня возникает запара. Как мне построить индекс из нескольких таблиц, id в которых естественно совпадают. Сейчас мой конфиг выглядит след образом:
Я так понимаю мне возвращаются айдишники найденных записей, но какой из них в какой таблице лежит? Как мне получить к этим айдишникам еще и данные или сфинкс занимается только ранжированием айдишников?