5 Страницы < 1 2 3 4 > »   
Ответить Создать тему

Ищу PHP программистов единомышленников , создание поисковой системы

Теги: PHP
MPA3b
post Nov 5 2015, 22:43 
Отправлено #16


мимимишки-мимими.

Сообщений: 2 956
Из: Чебоксары



БД MySQL это не проблема языка. Сам PHP — в принципе, в архитектуре — имеет ряд ключевых недостатков.

Цитата(relibly @ Nov 5 2015, 22:35)
у меня сечас на сайте узкое место это база mysql вот сечас думаю, толи базу повесить на RAID0 из 4 дисков по 1 TB то ли купить 2 SSD по 240 GB.

Диски у меня есть, но материнка всего 4 порта sata поддерживает и на ней установлено и DDR3L 16GB, могу все это перенести все на дргую материнку где 6 портов sata, но придется памяти купить DDR3 16 GB обычной, потомуч что DDR3L не поддерживает, засада в общем)).
*

Redis, MemCached?

Ну с таким-то железом даже битрикс тормозить не будет особо ))))

Сообщение отредактировал MPA3b - Nov 5 2015, 22:44

--------------------
Делаю сайты.
Profile CardPM
  0/0  
relibly
post Nov 5 2015, 22:52 
Отправлено #17


Постоялец

Сообщений: 363



Цитата(MPA3b @ Nov 5 2015, 22:43)
БД MySQL это не проблема языка. Сам PHP — в принципе, в архитектуре — имеет ряд ключевых недостатков.
Redis, MemCached?

Ну с таким-то железом даже битрикс тормозить не будет особо ))))
*


PHP у меня вообще ни как ни тормозит.

Любой движок ляжет если реализует мой функционал, я свой запарился оптимизировать.
Profile CardPM
  0/0  
MPA3b
post Nov 6 2015, 00:23 
Отправлено #18


мимимишки-мимими.

Сообщений: 2 956
Из: Чебоксары



Цитата(relibly @ Nov 5 2015, 22:52)
PHP у меня вообще ни как ни тормозит.

Любой движок ляжет если реализует мой функционал, я свой запарился оптимизировать.
*

О, а можно примеры?

--------------------
Делаю сайты.
Profile CardPM
  0/0  
relibly
post Nov 6 2015, 11:55 
Отправлено #19


Постоялец

Сообщений: 363



Цитата(MPA3b @ Nov 6 2015, 00:23)
О, а можно примеры?
*

Можно вот самый тяжелый запрос у меня, он выводит соседние дома в радиусе 200 метров

SELECT * FROM ' . MATERIALS_TABLE . ' WHERE `uid` != "' . $f_materials['uid'] . '" AND `approve` = "1" AND `status` = "1" AND `type` = 10 AND `city` = "' . $f_materials['city'] . '" AND ( 6371000 * acos ( cos ( radians ( ' . $coordinates[1] . ' ) ) * cos ( radians ( SUBSTRING_INDEX ( coordinates,",",-1 ) ) ) * cos ( radians ( SUBSTRING_INDEX ( coordinates,",",1 ) ) - radians ( ' . $coordinates[0] . ' ) ) + sin ( radians ( ' . $coordinates[1] . ' ) ) * sin ( radians ( SUBSTRING_INDEX ( coordinates,",",-1 ) ) ) ) ) <= 200 ORDER BY street ASC, ABS (`name`) ASC LIMIT 100';

Суть в том, что когда домов всего несколько тысяч все быстро считает 0.1-0.2 сек, но если у вас домов как у меня 650 тысяч, то это создает реальные проблемы запрос выполняется 3-4 секунды и даже индексы не спасают.

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

Сообщение отредактировал relibly - Nov 6 2015, 12:02
Profile CardPM
  0/0  
salex
post Nov 7 2015, 21:55 
Отправлено #20


полный превед!

Сообщений: 16 661
Из: Новочебоксарск



Цитата(relibly @ Nov 6 2015, 11:55)
Суть в том, что когда домов всего несколько тысяч все быстро считает 0.1-0.2 сек, но если у вас домов как у меня 650 тысяч, то это создает реальные проблемы запрос выполняется 3-4 секунды и даже индексы не спасают.

Сейчас у меня на данный все результаты расчетов выводов закешированы в файлы, проще говоря я их занного не считываю, только если когда обновляю данные
*

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

Сообщение отредактировал salex - Nov 7 2015, 21:56

--------------------
Profile CardPM
  0/+2  
MPA3b
post Nov 7 2015, 23:57 
Отправлено #21


мимимишки-мимими.

Сообщений: 2 956
Из: Чебоксары



Цитата(relibly @ Nov 6 2015, 11:55)
SELECT * FROM ' . MATERIALS_TABLE . ' WHERE `uid` != "' . $f_materials['uid'] . '" AND `approve` = "1" AND `status` = "1" AND `type` = 10 AND `city` = "' . $f_materials['city'] . '" AND ( 6371000 * acos ( cos ( radians ( ' . $coordinates[1] . ' ) ) * cos ( radians ( SUBSTRING_INDEX ( coordinates,",",-1 ) ) ) * cos ( radians ( SUBSTRING_INDEX ( coordinates,",",1 ) ) - radians ( ' . $coordinates[0] . ' ) ) + sin ( radians ( ' . $coordinates[1] . ' ) ) * sin ( radians ( SUBSTRING_INDEX ( coordinates,",",-1 ) ) ) ) ) <= 200 ORDER BY street ASC, ABS (`name`) ASC LIMIT 100';
*


Я, конечно, не программист, но даже я понимаю, что это — MySQL-запрос.
Как это показывает производительность вашего PHP-движка я не понимаю.

Для эндемичного случая вы написали эндемичное решение.
Где движок? Не вижу.
Где автоматизация, повторное использование кода, готовый функционал?

Сообщение отредактировал MPA3b - Nov 8 2015, 00:05

--------------------
Делаю сайты.
Profile CardPM
  0/0  
Snowm@n
post Nov 8 2015, 02:46 
Отправлено #22


O_o

Сообщений: 1 037



Цитата(salex @ Nov 7 2015, 21:55)
на самом деле, этот пример - классический пример говнокода, вместо того, чтобы оптимизировать запрос, ограничить координаты максимальными и минимальными широтой и долготой окружности, ввести по этим колонкам индекс и довести выполнение запроса до нескольких десятков миллисекунд, он изобретает велосипед, хранит все вычисленные результаты в файлах и в памяти...  facepalm_ani.gif
*
Да, индексами отбираем точки, которые попадают в квадрат x0 - r <= x <= x0 + r, y0 - r <= y <= y0 + r . Потом из них те, которые попадают в искомый круг (x0 - x) ^ 2 + (y0 - y) ^ 2 <= r ^ 2. Проблема, как обычно, не в движках, а в головах wink.gif

--------------------
Developer -> Lead Developer -> Lead Architect -> ... ?
Profile CardPM
  0/+1  
relibly
post Nov 8 2015, 20:25 
Отправлено #23


Постоялец

Сообщений: 363



Цитата(salex @ Nov 7 2015, 21:55)
на самом деле, этот пример - классический пример говнокода, вместо того, чтобы оптимизировать запрос, ограничить координаты максимальными и минимальными широтой и долготой окружности, ввести по этим колонкам индекс и довести выполнение запроса до нескольких десятков миллисекунд, он изобретает велосипед, хранит все вычисленные результаты в файлах и в памяти...  facepalm_ani.gif
*

Это Вы конечно здорого написали, пример приведите если конечно сможете, но я в этом сомневаюсь. Вы походу дело реально с большими данныи не работали. Велосипед я не изобретал, мне эти данные нужны только один раз при выводе информации о доме, поэтому и дергаю и кеша файла.
Profile CardPM
  -3/0  
relibly
post Nov 8 2015, 20:26 
Отправлено #24


Постоялец

Сообщений: 363



Цитата(MPA3b @ Nov 7 2015, 23:57)
Я, конечно, не программист, но даже я понимаю, что это — MySQL-запрос.
Как это показывает производительность вашего PHP-движка я не понимаю.

Для эндемичного случая вы написали эндемичное решение.
Где движок? Не вижу.
Где автоматизация, повторное использование кода, готовый функционал?
*


Я не могу сюда выложить ссылку.
Profile CardPM
  0/0  
relibly
post Nov 8 2015, 20:29 
Отправлено #25


Постоялец

Сообщений: 363



Цитата(Snowm@n @ Nov 8 2015, 02:46)
Да, индексами отбираем точки, которые попадают в квадрат x0 - r <= x <= x0 + r, y0 - r <= y <= y0 + r . Потом из них те, которые попадают в искомый круг (x0 - x) ^ 2 + (y0 - y) ^ 2 <= r ^ 2. Проблема, как обычно, не в движках, а в головах  wink.gif
*


Да достали своими индексами говорю не спасают. Можете переписать мой запрос по дуругому, а то советовать все горазды.
Profile CardPM
  0/0  
relibly
post Nov 8 2015, 20:33 
Отправлено #26


Постоялец

Сообщений: 363



Цитата(salex @ Nov 7 2015, 21:55)
на самом деле, этот пример - классический пример говнокода, вместо того, чтобы оптимизировать запрос, ограничить координаты максимальными и минимальными широтой и долготой окружности, ввести по этим колонкам индекс и довести выполнение запроса до нескольких десятков миллисекунд, он изобретает велосипед, хранит все вычисленные результаты в файлах и в памяти...  facepalm_ani.gif
*


Вот типый сайт было кода, тормозит бросто без божно http://ww.stolplit.ru/, интересует ваше мнение? Движок битрикс форева, тут есть любители говно битрикса.

Сообщение отредактировал relibly - Nov 8 2015, 20:34
Profile CardPM
  0/0  
salex
post Nov 8 2015, 23:26 
Отправлено #27


полный превед!

Сообщений: 16 661
Из: Новочебоксарск



Цитата(relibly @ Nov 8 2015, 20:25)
Это Вы конечно здорого написали, пример приведите если конечно сможете, но я в этом сомневаюсь.
*

у меня этот запрос, о великий программист php, работает срабатывает за 19мс, на 800 тыс объектах, при чем на железе, которое явно не дотягивает до серверного, да еще и на бд встраиваемой, первоначальный запрос работает за 9.416с
Исходный код

select * from coords WHERE
 b1 between @bmin and @bmax
 and a1 between @amin and @amax
 and 6371000*acos(sin(radians(b1))*sin(radians(@b0))+cos(radians(b1))*cos(radians(@b0))*cos(radians(a1)-radians(@a0))) <200;

Цитата(relibly @ Nov 8 2015, 20:29)
Да достали своими индексами говорю не спасают. Можете переписать мой запрос по дуругому, а то советовать все горазды.
*

индексы не спасают в случае со сложными тригонометрическими формулами, в твоем случае, эта сложная формула вычисляется для каждой строки, зато индексы работают с простыми условиями, как вам указали используйте ограничение по сектору, в который вписывается указанный круг, в результате, формула будет вычистятся максимум для 100-200 строк

Сообщение отредактировал salex - Nov 8 2015, 23:30

--------------------
Profile CardPM
  0/+2  
.Saymon
post Nov 9 2015, 10:46 
Отправлено #28


Постоялец

Сообщений: 338
Из: Чебоксары



Цитата
толи базу повесить на RAID0

Сума сошли? Или вы бэкапы как следует уже научились делать, и восстанавливать их очень быстро?
Profile CardPM
  0/0  
jem
post Nov 9 2015, 11:10 
Отправлено #29


Активный

Сообщений: 4 908



Цитата(relibly @ Nov 6 2015, 11:55)
SELECT * FROM ' . MATERIALS_TABLE . ' WHERE `uid` != "' . $f_materials['uid'] . '" AND `approve` = "1" AND `status` = "1" AND `type` = 10 AND `city` = "' . $f_materials['city'] . '" AND ( 6371000 * acos ( cos ( radians ( ' . $coordinates[1] . ' ) ) * cos ( radians ( SUBSTRING_INDEX ( coordinates,",",-1 ) ) ) * cos ( radians ( SUBSTRING_INDEX ( coordinates,",",1 ) ) - radians ( ' . $coordinates[0] . ' ) ) + sin ( radians ( ' . $coordinates[1] . ' ) ) * sin ( radians ( SUBSTRING_INDEX ( coordinates,",",-1 ) ) ) ) ) <= 200 ORDER BY street ASC, ABS (`name`) ASC LIMIT 100';
*

Когда программисты просят меня оптимизировать похожие запросы, то, посмотрев на такое художество, я первым делом отправляю их читать букварь с места где пишут про переменные связывания. Хоть с мускулем я и не знаком, но думаю, что даже там есть парсинг и кэширование его результатов.

--------------------
C, Clojure(Script), Common Lisp, ECMAScript, Haskell, Java, Lua, Perl, PL/SQL, Python, Scala, SQL, Transact-SQL.
Profile CardPM
  0/+1  
relibly
post Nov 9 2015, 15:35 
Отправлено #30


Постоялец

Сообщений: 363



Цитата(.Saymon @ Nov 9 2015, 10:46)
Сума сошли? Или вы бэкапы как следует уже научились делать, и восстанавливать их очень быстро?
*

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

Как вариант, как я уже писал купить 2 ssd по 240 ГБ и объеденить их в raid0

Сообщение отредактировал relibly - Nov 9 2015, 15:40
Profile CardPM
  0/0  

5 Страницы < 1 2 3 4 > » 
ОтветитьTopic Options
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
Быстрый ответ
Кнопки кодов
 Расширенный режим
 Нормальный режим
    Закрыть все тэги


Открытых тэгов: 
Введите сообщение
Смайлики
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
         
Показать все

Опции сообщения