Задача заключается в запаковке модуля yt-dlp с использованием Python. Необходимо использовать локальный импорт через sys.path. Подробности по работе с модулем указаны в ссылке на GitHub. Ожидается создание инструкции по правильной настройке импорта модуля.
Оптимизация БД
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
Приветствую
Интернет-магазин на Битриксе вдруг стал сильно нагружать сервер и тормозить.
Причем раньше такого небыло. Бекап сайта на дату когда было все нормально не помог.
Трафик на сайт обычный 100-200 человек в день.
Тех поддержка хостинга проанализировала , говорит что много запросов на БД SQL надо оптимизировать или битркис и базу.
Сообщение от поддержки:
mysql> explain SELECT DISTINCT BS.ID AS ID, BS.DEPTH_LEVEL AS DEPTH_LEVEL, BS.NAME AS NAME, B.SECTION_PAGE_URL AS SECTION_PAGE_URL, BS.SORT AS SORT, BS.PICTURE AS PICTURE, BS.DETAIL_PICTURE AS DETAIL_PICTURE, BS.CODE AS CODE, BS.XML_ID AS EXTERNAL_ID, B.IBLOCK_TYPE_ID AS IBLOCK_TYPE_ID, BS.IBLOCK_ID AS IBLOCK_ID, B.CODE AS IBLOCK_CODE, B.XML_ID AS IBLOCK_EXTERNAL_ID, BS.GLOBAL_ACTIVE AS GLOBAL_ACTIVE, BS.LEFT_MARGIN AS LEFT_MARGIN,COUNT(DISTINCT BE.ID) as ELEMENT_CNT, BUF.UF_PHOTO FROM b_iblock_section BS INNER JOIN b_iblock B ON BS.IBLOCK_ID = B.ID LEFT JOIN b_uts_iblock_28_section BUF ON BUF.VALUE_ID = BS.ID INNER JOIN b_iblock_section BSTEMP ON BSTEMP.IBLOCK_ID = BS.IBLOCK_ID LEFT JOIN b_iblock_section_element BSE ON BSE.IBLOCK_SECTION_ID=BSTEMP.ID LEFT JOIN b_iblock_element BE ON (BSE.IBLOCK_ELEMENT_ID=BE.ID AND ((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL ) AND BE.IBLOCK_ID = BS.IBLOCK_ID ) AND BE.ACTIVE='Y' AND (BE.ACTIVE_TO >= now() OR BE.ACTIVE_TO IS NULL) AND (BE.ACTIVE_FROM = BS.LEFT_MARGIN AND BSTEMP.RIGHT_MARGIN = 'R' AND (IBG.PERMISSION='X' OR B.ACTIVE='Y') ) OR (B.RIGHTS_MODE = 'E' AND EXISTS ( SELECT SR.SECTION_ID FROM b_iblock_section_right SR INNER JOIN b_iblock_right IBR ON IBR.ID = SR.RIGHT_ID INNER JOIN b_user_access UA ON UA.ACCESS_CODE = IBR.GROUP_CODE AND UA.USER_ID = 0 WHERE SR.SECTION_ID = BS.ID AND IBR.OP_SREAD = 'Y' )) )) GROUP BY BS.ID, B.ID ORDER BY BS.LEFT_MARGIN asc;
+----+--------------------+--------+------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+---------+--------------------------------------+------+----------+----------------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+--------------------+--------+------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+---------+--------------------------------------+------+----------+----------------------------------------------------+
| 1 | PRIMARY | B | NULL | const | PRIMARY | PRIMARY | 4 | const | 1 | 100.00 | Using temporary; Using filesort |
| 1 | PRIMARY | BS | NULL | ref | ix_iblock_section_1,ix_iblock_section_depth_level,ix_iblock_section_left_margin,ix_iblock_section_right_margin,ix_iblock_section_code | ix_iblock_section_1 | 4 | const | 1417 | 3.33 | Using index condition; Using where |
Aleksey Posevin, [22.06.2022 12:33]
[Forwarded from Aleksey Posevin]
| 1 | PRIMARY | BUF | NULL | eq_ref | PRIMARY | PRIMARY | 4 | iceholodse_ice.BS.ID | 1 | 100.00 | NULL |
| 1 | PRIMARY | BSTEMP | NULL | ALL | ix_iblock_section_1,ix_iblock_section_depth_level,ix_iblock_section_left_margin,ix_iblock_section_right_margin,ix_iblock_section_code | NULL | NULL | NULL | 1250 | 1.11 | Using where; Using join buffer (Block Nested Loop) |
| 1 | PRIMARY | BSE | NULL | ref | ux_iblock_section_element | ux_iblock_section_element | 4 | iceholodse_ice.BSTEMP.ID | 29 | 100.00 | Using index |
| 1 | PRIMARY | BE | NULL | eq_ref | PRIMARY,ix_iblock_element_1,ix_iblock_element_4,ix_iblock_element_3,ix_iblock_element_code | PRIMARY | 4 | iceholodse_ice.BSE.IBLOCK_ELEMENT_ID | 1 | 100.00 | Using where |
| 3 | DEPENDENT SUBQUERY | SR | NULL | ref | PRIMARY,ix_b_iblock_section_right_1 | ix_b_iblock_section_right_1 | 4 | iceholodse_ice.BS.ID | 1 | 100.00 | Using index |
| 3 | DEPENDENT SUBQUERY | IBR | NULL | eq_ref | PRIMARY,ix_b_iblock_right_group_code,ix_b_iblock_right_op_eread,ix_b_iblock_right_op_sread | PRIMARY | 4 | iceholodse_ice.SR.RIGHT_ID | 1 | 100.00 | Using where |
| 3 | DEPENDENT SUBQUERY | UA | NULL | ref | ix_ua_user_provider,ix_ua_user_access,ix_ua_access | ix_ua_user_provider | 5 | const | 1 | 10.00 | Using where |
| 2 | DEPENDENT SUBQUERY | IBG | NULL | unique_subquery | ux_iblock_group_1 | ux_iblock_group_1 | 8 | func,const | 1 | 33.33 | Using where |
+----+--------------------+--------+------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+---------+--------------------------------------+------+----------+----------------------------------------------------+
Они отправляются при открытии сайта и переходах между страницами и каждый обходит по 2-3 тысячи строк. Это вызывает нагрузку на MySQL, что в свою очередь создаёт нагрузку на процессор.
mysql> explain SELECT BE.ID as ID,BE.NAME as NAME,BE.IBLOCK_ID as IBLOCK_ID,B.DETAIL_PAGE_URL as DETAIL_PAGE_URL,BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID,L.DIR as LANG_DIR,BE.CODE as CODE,BE.XML_ID as EXTERNAL_ID,B.IBLOCK_TYPE_ID as IBLOCK_TYPE_ID,B.CODE as IBLOCK_CODE,B.XML_ID as IBLOCK_EXTERNAL_ID,B.LID as LID , CAT_PR.QUANTITY as CATALOG_QUANTITY, IF (CAT_PR.QUANTITY_TRACE = 'D', 'N', CAT_PR.QUANTITY_TRACE) as CATALOG_QUANTITY_TRACE, CAT_PR.QUANTITY_TRACE as CATALOG_QUANTITY_TRACE_ORIG, CAT_PR.WEIGHT as CATALOG_WEIGHT, CAT_PR.VAT_ID as CATALOG_VAT_ID, CAT_PR.VAT_INCLUDED as CATALOG_VAT_INCLUDED, IF (CAT_PR.CAN_BUY_ZERO = 'D', 'N', CAT_PR.CAN_BUY_ZERO) as CATALOG_CAN_BUY_ZERO, CAT_PR.CAN_BUY_ZERO as CATALOG_CAN_BUY_ZERO_ORIG, CAT_PR.PURCHASING_PRICE as CATALOG_PURCHASING_PRICE, CAT_PR.PURCHASING_CURRENCY as CATALOG_PURCHASING_CURRENCY, CAT_PR.QUANTITY_RESERVED as CATALOG_QUANTITY_RESERVED, IF (CAT_PR.SUBSCRIBE = 'D', 'Y', CAT_PR.SUBSCRIBE) as CATALOG_SUBSCRIBE, CAT_PR.SUBSCRIBE as CATALOG_SUBSCRIBE_ORIG, CAT_PR.WIDTH as CATALOG_WIDTH, CAT_PR.LENGTH as CATALOG_LENGTH, CAT_PR.HEIGHT as CATALOG_HEIGHT, CAT_PR.MEASURE as CATALOG_MEASURE, CAT_PR.TYPE as CATALOG_TYPE, CAT_PR.AVAILABLE as CATALOG_AVAILABLE, CAT_PR.BUNDLE as CATALOG_BUNDLE, CAT_PR.PRICE_TYPE as CATALOG_PRICE_TYPE, CAT_PR.RECUR_SCHEME_LENGTH as CATALOG_RECUR_SCHEME_LENGTH, CAT_PR.RECUR_SCHEME_TYPE as CATALOG_RECUR_SCHEME_TYPE, CAT_PR.TRIAL_PRICE_ID as CATALOG_TRIAL_PRICE_ID, CAT_PR.WITHOUT_ORDER as CATALOG_WITHOUT_ORDER, CAT_PR.SELECT_BEST_PRICE as CATALOG_SELECT_BEST_PRICE, IF (CAT_PR.NEGATIVE_AMOUNT_TRACE = 'D', 'N', CAT_PR.NEGATIVE_AMOUNT_TRACE) as CATALOG_NEGATIVE_AMOUNT_TRACE, CAT_PR.NEGATIVE_AMOUNT_TRACE as CATALOG_NEGATIVE_AMOUNT_TRACE_ORIG, CAT_VAT.RATE as CATALOG_VAT FROM b_iblock B INNER JOIN b_lang L ON B.LID=L.LID INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID left join b_catalog_product as CAT_PR on (CAT_PR.ID = BE.ID) left join b_catalog_iblock as CAT_IB on ((CAT_PR.VAT_ID IS NULL or CAT_PR.VAT_ID = 0) and CAT_IB.IBLOCK_ID = BE.IBLOCK_ID) left join b_catalog_vat as CAT_VAT on (CAT_VAT.ID = IF((CAT_PR.VAT_ID IS NULL OR CAT_PR.VAT_ID = 0), CAT_IB.VAT_ID, CAT_PR.VAT_ID)) WHERE 1=1 AND ( ((((BE.ACTIVE='Y')))) AND ( ( ( (BE.ID IN ( SELECT FPV0.VALUE_NUM FROM b_iblock B INNER JOIN b_lang L ON B.LID=L.LID INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID LEFT JOIN b_iblock_property FP0 ON FP0.IBLOCK_ID = B.ID AND FP0.CODE='CML2_LINK' LEFT JOIN b_iblock_element_property FPV0 ON FPV0.IBLOCK_PROPERTY_ID = FP0.ID AND FPV0.IBLOCK_ELEMENT_ID = BE.ID left join b_catalog_product as CAT_PR on (CAT_PR.ID = BE.ID) left join b_catalog_iblock as CAT_IB on ((CAT_PR.VAT_ID IS NULL or CAT_PR.VAT_ID = 0) and CAT_IB.IBLOCK_ID = BE.IBLOCK_ID) left join b_catalog_vat as CAT_VAT on (CAT_VAT.ID = IF((CAT_PR.VAT_ID IS NULL OR CAT_PR.VAT_ID = 0), CAT_IB.VAT_ID, CAT_PR.VAT_ID)) WHERE 1=1 AND ( (((BE.ACTIVE_TO >= now() OR BE.ACTIVE_TO IS NULL) AND (BE.ACTIVE_FROM
Aleksey Posevin, [22.06.2022 12:33]
[Forwarded from Aleksey Posevin]
+----+--------------------+---------+------------+-------------+--------------------------------------------------------------------------------------------+----------------------------+---------+---------------------------------------+------+----------+----------------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+--------------------+---------+------------+-------------+--------------------------------------------------------------------------------------------+----------------------------+---------+---------------------------------------+------+----------+----------------------------------------------------+
| 1 | PRIMARY | L | NULL | ALL | PRIMARY | NULL | NULL | NULL | 1 | 100.00 | NULL |
| 1 | PRIMARY | B | NULL | ALL | PRIMARY | NULL | NULL | NULL | 22 | 10.00 | Using where; Using join buffer (Block Nested Loop) |
| 1 | PRIMARY | BE | NULL | ref | ix_iblock_element_1,ix_iblock_element_4,ix_iblock_element_3,ix_iblock_element_code | ix_iblock_element_1 | 4 | iceholodse_ice.B.ID | 2099 | 0.50 | Using where |
| 1 | PRIMARY | CAT_PR | NULL | eq_ref | PRIMARY | PRIMARY | 4 | iceholodse_ice.BE.ID | 1 | 100.00 | Using where |
| 1 | PRIMARY | CAT_IB | NULL | eq_ref | PRIMARY | PRIMARY | 4 | iceholodse_ice.B.ID | 1 | 100.00 | Using where |
| 1 | PRIMARY | CAT_VAT | NULL | ALL | PRIMARY | NULL | NULL | NULL | 3 | 100.00 | Using where; Using join buffer (Block Nested Loop) |
| 3 | DEPENDENT SUBQUERY | L | NULL | index | PRIMARY | PRIMARY | 6 | NULL | 1 | 100.00 | Using index |
| 3 | DEPENDENT SUBQUERY | FP0 | NULL | ref | PRIMARY,ix_iblock_property_1,ix_iblock_property_2 | ix_iblock_property_2 | 153 | const | 2 | 100.00 | Using where |
| 3 | DEPENDENT SUBQUERY | B | NULL | eq_ref | PRIMARY | PRIMARY | 4 | iceholodse_ice.FP0.IBLOCK_ID | 1 | 10.00 | Using where |
| 3 | DEPENDENT SUBQUERY | FPV0 | NULL | ref_or_null | ix_iblock_element_property_1,ix_iblock_element_property_2,ix_iblock_element_prop_num | ix_iblock_element_prop_num | 14 | func,iceholodse_ice.FP0.ID | 42 | 100.00 | Using index condition; Using where |
| 3 | DEPENDENT SUBQUERY | BE | NULL | eq_ref | PRIMARY,ix_iblock_element_1,ix_iblock_element_4,ix_iblock_element_3,ix_iblock_element_code | PRIMARY | 4 | iceholodse_ice.FPV0.IBLOCK_ELEMENT_ID | 1 | 5.00 | Using where |
| 2 | DEPENDENT SUBQUERY | L | NULL | index | PRIMARY | PRIMARY | 6 | NULL | 1 | 100.00 | Using index |
| 2 | DEPENDENT SUBQUERY | FP0 | NULL | ref | PRIMARY,ix_iblock_property_1,ix_iblock_property_2 | ix_iblock_property_2 | 153 | const | 2 | 100.00 | Using where |
| 2 | DEPENDENT SUBQUERY | B | NULL | eq_ref | PRIMARY | PRIMARY | 4 | iceholodse_ice.FP0.IBLOCK_ID | 1 | 10.00 | Using where |
| 2 | DEPENDENT SUBQUERY | FPV0 | NULL | ref | ix_iblock_element_property_1,ix_iblock_element_property_2,ix_iblock_element_prop_num | ix_iblock_element_prop_num | 14 | func,iceholodse_ice.FP0.ID | 21 | 100.00 | Using index condition; Using where |
| 2 | DEPENDENT SUBQUERY | CAT_PR | NULL | eq_ref | PRIMARY | PRIMARY | 4 | iceholodse_ice.FPV0.IBLOCK_ELEMENT_ID | 1 | 10.00 | Using where |
| 2 | DEPENDENT SUBQUERY | BE | NULL | eq_ref | PRIMARY,ix_iblock_element_1,ix_iblock_element_4,ix_iblock_element_3,ix_iblock_element_code | PRIMARY | 4 | iceholodse_ice.FPV0.IBLOCK_ELEMENT_ID | 1 | 5.00 | Using where |
| 2 | DEPENDENT SUBQUERY | CAT_IB | NULL | eq_ref | PRIMARY | PRIMARY | 4 | iceholodse_ice.FP0.IBLOCK_ID | 1 | 100.00 | Using where |
| 2 | DEPENDENT SUBQUERY | CAT_VAT | NULL | eq_ref | PRIMARY | PRIMARY | 4 | func | 1 | 100.00 | Using where; Using index |
+----+--------------------+---------+------------+-------------+--------------------------------------------------------------------------------------------+----------------------------+---------+---------------------------------------+------+----------+----------------------------------------------------+
Заявки фрилансеров
Похожие заказы
- Веб-программирование2 заявкиЗакрыт3 года назад
Необходимо доработать хлебные крошки на сайте интернет-магазина на платформе Opencart. Требуется добавить информацию о подкатегории и производителе при выборе товара. Визуальные примеры предоставлены. Ожидаются сроки выполнения и стоимость работ. Предпочтение отдается специалистам с положительными отзывами.
Веб-программирование5 заявокЗакрыт3 года назадИщется фронт-енд программист для работы над проектом на Laravel на срок от 1 до 2 месяцев с возможностью дальнейшего сотрудничества. Знания PHP, MySQL и PostgreSQL обязательны. Понимание VUE.js будет преимуществом. Обучение новым технологиям и помощь с релокацией в Польшу или Испанию предоставляется.
Веб-программирование9 заявокЗакрыт3 года назадНеобходимо восстановить и переписать программу на Java для получения данных с Fusion Solar. Программа должна сохранять данные в текстовый файл и работать в фоновом режиме. Требуется возможность задавать имя файла, частоту получения данных и логировать ошибки подключения. Данные должны сохраняться с точностью до сотых.
Веб-программирование1 заявкаЗакрыт3 года назадТребуется разработать клиентское приложение на React.js с использованием TypeScript и GitHub API. Приложение должно включать регистрацию и авторизацию пользователей, а также функционал для работы с issues: добавление, обновление, удаление и получение данных. После регистрации пользователи получают доступ к личному кабинету с возможностью взаимодействия с issues из GitHub API.
Веб-программирование1 исполнительЗавершен3 года назадСоздание двустраничного веб-проекта с админ панелью, авторизацией и функционалом таблиц. Реализация аналитики по параметрам, возможность добавления новых пользователей и редактирования данных. Проект включает создание таблиц с текстовыми и числовыми значениями, автоматическую окраску строк по статусам, а также возможность настройки прав пользователей.
Веб-программирование2 заявкиЗакрыт3 года назадНеобходимо разработать телеграм бота, который будет следить за определенными твиттерами, парсить их сообщения и reply с помощью скриншотов. Бот должен переводить текст на русский язык, исключая хэштеги и имена пользователей. Владелец сможет подсчитывать пользователей и ограничивать доступ к боту для определенного списка.
Веб-программирование1 исполнительЗакрыт3 года назадНеобходимо восстановить внутреннюю перелинковку для проекта с Tilda, состоящего из 24 страниц. Также требуется настроить работу форм для отправки уведомлений на email. Ожидается качественное выполнение задач с учетом особенностей платформы.
Веб-программирование3 заявкиЗакрыт3 года назадНеобходимо создать бота, который будет автоматически торговать на криптовалютной бирже, анализируя посты из Твиттера. Бот должен открывать сделки по ключевым словам, а также по изображениям с этими словами и определёнными объектами. Отклики принимаются только от специалистов с опытом в AI и криптобиржах. Портфолио с аналогичными проектами обязательно.
Веб-программированиенет заявокЗакрыт3 года назад- $10
Требуется разработать Telegram-бота, который позволит пользователям приглашать людей и получать за это деньги. Можно использовать готовый скрипт, с последующим изменением названия. Бот должен быть простым в использовании и функциональным для реферальной программы.
Веб-программирование6 заявокЗакрыт3 года назад