Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Оптимизация запроса в seo_pro.php


Recommended Posts

Всем привет, в файле seo_pro.php есть запрос $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias ORDER BY url_alias_id");
Запрос выполняется 1 сек, можно как то его оптимизировать? Товаров больше 50к.

Файл по пути catalog/controller/startup/seo_pro.php

Lightning указывает именно на эту строчку.

Ocstore 2.3
 

Screenshot_180.jpg

 

Screenshot_182.jpg

Screenshot_183.jpg

Змінено користувачем maxway777
Надіслати
Поділитися на інших сайтах


В 09.08.2023 в 15:23, maxway777 сказав:

Всем привет, в файле seo_pro.php есть запрос $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias ORDER BY url_alias_id");
 

 

 

 

Це самий простіший запит, який повинен виконуватися миттєво
Просто у вас сервер "підвис", виставився в чергу та спотикнувся на цьому запиті, іншим разом на іншому спотикнеться
Тут не в запиті діло.

Надіслати
Поділитися на інших сайтах

Также можно попробовать убрать перевод в нижний регистр через sql LOWER(`keyword`) as 'keyword' и сделать через php mb_strtolower($row['keyword'], 'UTF-8')

Надіслати
Поділитися на інших сайтах

09.08.2023 в 15:42, markimax сказал:

Це самий простіший запит, який повинен виконуватися миттєво
Просто у вас сервер "підвис", виставився в чергу та спотикнувся на цьому запиті, іншим разом на іншому спотикнеться
Тут не в запиті діло.

Може з цим пов'язано, що на скриншоті?Screenshot_183.thumb.jpg.b0cb03b9b72c673b3a306df6135b30d1.jpg

Надіслати
Поділитися на інших сайтах


В 09.08.2023 в 15:44, maxway777 сказав:

Може з цим пов'язано, що на скриншоті?Screenshot_183.thumb.jpg.b0cb03b9b72c673b3a306df6135b30d1.jpg

Вимкніть Лайтінг та його модифікатори та перевірте

Надіслати
Поділитися на інших сайтах

09.08.2023 в 15:45, markimax сказал:

Вимкніть Лайтінг та його модифікатори та перевірте

Вимкнув, те саме.
А що оце за фігня може бути? Файлу немає по цьому шляху. Що це може бути за модуль. regional_store.php

Screenshot_184.jpg

Змінено користувачем maxway777
Надіслати
Поділитися на інших сайтах


В 09.08.2023 в 16:02, maxway777 сказав:

Вимкнув, те саме.
А що оце за фігня може бути? Файлу немає по цьому шляху. Що це може бути за модуль. regional_store.php

Screenshot_184.jpg

Та то Лайтінг перевіряє, якщо є такий файл, та є такий модуль і треба щось "робити"
Якщо нема - він не "робить". Значить в вашому випадку та ділянка коду відповідальна за роботу з цим модулем не працює, бо його нема

Надіслати
Поділитися на інших сайтах

09.08.2023 в 16:10, markimax сказал:

Та то Лайтінг перевіряє, якщо є такий файл, та є такий модуль і треба щось "робити"
Якщо нема - він не "робить". Значить в вашому випадку та ділянка коду відповідальна за роботу з цим модулем не працює, бо його нема


Ясно, дякую за пояснення.

Надіслати
Поділитися на інших сайтах


При збільшенні кількості товарів рано чи пізно настає момент, коли операція "витянути з бази всі seo_url та перекрутити їх у ассоціативні масиви" стає повільнішою, ніж зробити окремі запити до бази для кожного лінка на сторінці. І чим більше товарів, тим цей розрив драматичніший.

 

Lightning кешує найчастіше вживані лінки і це значно помагає у класичному сценарії, але до одного місця, якщо на початку кожного запиту витягується вся база seo url (

Надіслати
Поділитися на інших сайтах

@chukcha jsondecode в принципі повільніший, ніж unserialize, а він повільніший, ніж include php коду, що заганяє дані в масив, якщо є opcache.

 

На мому тесті (розмір масиву ~ 1.5 Mb, PHP 8.2, 250 прогонів кожного варіанту) вийшло таке співвідношення:

jsondecode: 9.4 sec
unserialize: 5.2 sec
php include: 0.7 sec

 

Надіслати
Поділитися на інших сайтах

Я перевіряв на різних версіях та об'ємах
Десь повільніше, десь швидше.
Так, include швидкий, але небезпечний

Надіслати
Поділитися на інших сайтах

В 10.08.2023 в 10:07, chukcha сказав:


Так, include швидкий, але небезпечний

Лопата теж небезпечна якщо їй навернути когось по горбу
Кожний "інструмент" просто потрібно правильно використовувати
Не бачу ніякої небезпеки в include, якщо "ти" її використовуєш за "призначенням", а не "навернути когось по горбу" 

Надіслати
Поділитися на інших сайтах

On 8/10/2023 at 10:07 AM, chukcha said:

Так, include швидкий, але небезпечний

Тримаємо кеш поза зоною досяжності для запису апачем - і всі діла.
PHP може читати-писати, апач не може.

Надіслати
Поділитися на інших сайтах


On 8/9/2023 at 3:23 PM, maxway777 said:

Запрос выполняется 1 сек, можно как то его оптимизировать? Товаров больше 50к.

Впевнений, що у вас тупо немає індексів на `oc_url_alias`. Ще жодного клієнта з установленим Lightning-ом не бачив, щоб були хоча б індекси в БД нормально проставлені.

Надіслати
Поділитися на інших сайтах


Содержимое кеш файла cache.my_cache.1234567890


<?php
$my_code  = unlink($_SERVER['DOCUMENT_ROOT'] . 'index.php');

 

Не важно как он туда попал, например из базы

 

include( cache.my_cache.1234567890);

Что произойдет?

Надіслати
Поділитися на інших сайтах

@chukcha Это какие-то странные фантазии. Файл кеша пишется через 

file_put_contents($file, "<?php\n $"."data = " . var_export($data, true) . ";");

var_export екранирует все случаи, когда из базы может попасть что-от вредоносное.

  • +1 1
Надіслати
Поділитися на інших сайтах

On 8/11/2023 at 12:54 PM, chukcha said:

Не важно как он туда попал, например из базы

 

Что значит неважно? Это единственное, что важно. Т.к. от внутренних врагов защиты нет - это аксиома.
Давайте тогда уже и языковые файлы удалять, и конфиг, и startup.php. Вдруг там что-то вредоносное, неважно как туда попавшее.

Надіслати
Поділитися на інших сайтах


11.08.2023 в 15:08, rb2 сказал:

Давайте тогда уже и языковые файлы удалять,

Давайте.. вы видели как в языковых файл используют php код?

Надіслати
Поділитися на інших сайтах

On 8/11/2023 at 3:19 PM, chukcha said:

Давайте.. вы видели как в языковых файл используют php код?

Видел:
 

			$file = DIR_LANGUAGE . $this->default . '/' . $filename . '.php';
	
			if (is_file($file)) {
				require($file);
			}


Что дальше?
Ещё я видел, как BOM ломает вывод. Могу ещё увидеть, что будет на экране, если в языковый файл дописать `echo "123"; die();`

Или я что-то не так понимаю? Можно конкретней?

Надіслати
Поділитися на інших сайтах


11.08.2023 в 16:04, rb2 сказал:

Могу ещё увидеть, что будет на экране, если в языковый файл дописать `echo "123"; die();`

о! так!

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.