Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6806-й день

Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua

 php Вопрос по файлу который инклюдится

RipperR
Aug 22 2017, 10:42
  
Пост #1



Репутация:   40  
Постоялец
***

Группа: Пользователи
Сообщений: 1 153
С нами с: 25-March 08


Народ вопрос такой есть файл в нем собраны все классы и функции моего проекта он уже порядка 7000 строк.
Влияет ли подключение такого файла к каждой страница на производительность ? или лучше его разбить на части ...

А то я обратил внимание что странички (файл php) на всех подразделах выполняется по 500мс чисто файл php.. то-есть в логах стоит
Ожидание 216мс скачивание 353 мс...

Сообщение отредактировал RipperR - Aug 22 2017, 10:44
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов(1 - 12)
Celin
Aug 22 2017, 10:46
  
Пост #2



Репутация:   -342  
rtfm
*****

Группа: Пользователи
Сообщений: 5 264
С нами с: 4-April 08


хкм. дробить на файлы и подключать по потребности.
так нельзя
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
miniden
Aug 22 2017, 10:53
  
Пост #3



Репутация:   31  
Дух


Группа: Пользователи
Сообщений: 89
С нами с: 14-October 09


(RipperR @ Aug 22 2017, 11:42) Перейти к цитате

Народ вопрос такой есть файл в нем собраны все классы и функции моего проекта он уже порядка 7000 строк.
Влияет ли подключение такого файла к каждой страница на производительность ? или лучше его разбить на части ...

А то я обратил внимание что странички (файл php) на всех подразделах выполняется по 500мс чисто файл php.. то-есть в логах стоит
Ожидание 216мс скачивание 353 мс...

7к строк это не много
http://php.net/manual/pl/function.memory-get-usage.php - вот так меряем на каких этапах теряем много памяти
https://stackoverflow.com/questions/535020/...ion-time-in-php - так меряем вызовы и время.

В идеальном мире, 20мб на php скрипт это уже предел. По факту на теперешних серверах и 160мб норма.
На объявление самих функций, php не потратит много времени и памяти.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
RipperR
Aug 22 2017, 11:30
  
Пост #4



Репутация:   40  
Постоялец
***

Группа: Пользователи
Сообщений: 1 153
С нами с: 25-March 08


Тазик под сайт не рахит но чет задумчевый FX-8320E 8GB вывод бд через json генерится 600 ms основной файлы рендерется 500 ms вроде не критично но мне кажется дальше будет хуже в бд уже Овер 10к записей и становится будет все больше ...

Сообщение отредактировал RipperR - Aug 22 2017, 12:29
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
BahuL
Aug 22 2017, 12:09
  
Пост #5



Репутация:   11  
Fasty.net


Группа: Пользователи
Сообщений: 46
С нами с: 31-March 06


Создатели симфони тоже используют 1 большой файл вместо кучи мелких

To ensure optimal flexibility and code reuse, Symfony applications leverage a variety of classes and 3rd party components. But loading all of these classes from separate files on each request can result in some overhead. To reduce this overhead, the Symfony Standard Edition provides a script to generate a so-called bootstrap file, consisting of multiple classes definitions in a single file. By including this file (which contains a copy of many of the core classes), Symfony no longer needs to include any of the source files containing those classes. This will reduce disc IO quite a bit.


ссыль
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
RipperR
Aug 22 2017, 12:24
  
Пост #6



Репутация:   40  
Постоялец
***

Группа: Пользователи
Сообщений: 1 153
С нами с: 25-March 08


Короче я так понял что надо наставить там микротаймов в большем файле по смотреть на чем оно спотыкается ?
Нехочет выполнять memory_get_usage тупо крашится ...

PHP/5.6.30 на 7 рку пока апать не рискну ибо там еще freepbx с его GUI и ему это врятли понравится ...

Сообщение отредактировал RipperR - Aug 22 2017, 12:32
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
RipperR
Aug 22 2017, 18:43
  
Пост #7



Репутация:   40  
Постоялец
***

Группа: Пользователи
Сообщений: 1 153
С нами с: 25-March 08


Сделал тестовый файл занклюдил свой файл с функционалом с простым echo "21312"

время выполнения 300-500мс ...

Я чет не понимаю если функции не вызываются не вызываются методы из классов и сами классы как таковые ... какого хрена оно так туго его обрабатывает

Сообщение отредактировал RipperR - Aug 22 2017, 18:44
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
BahuL
Aug 28 2017, 12:58
  
Пост #8



Репутация:   11  
Fasty.net


Группа: Пользователи
Сообщений: 46
С нами с: 31-March 06


(RipperR @ Aug 22 2017, 19:43) Перейти к цитате

Сделал тестовый файл занклюдил свой файл с функционалом с простым echo "21312"

время выполнения 300-500мс ...

Я чет не понимаю если функции не вызываются не вызываются методы из классов и сами классы как таковые ... какого хрена оно так туго его обрабатывает


как настроено кеширование. На какой системе вертится проект? ФС?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
RipperR
Aug 28 2017, 20:48
  
Пост #9



Репутация:   40  
Постоялец
***

Группа: Пользователи
Сообщений: 1 153
С нами с: 25-March 08


Кеширование не трогал все дефолтное .
Ось CentsOS 7 ext4
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
RipperR
Aug 31 2017, 15:01
  
Пост #10



Репутация:   40  
Постоялец
***

Группа: Пользователи
Сообщений: 1 153
С нами с: 25-March 08


Нашел я так понимаю одно из узких мест ... а имеено подключение к MySQL bd


        $start = microtime();
    $dbcnx=@mysqli_connect($dblocation,$dbuser,$dbpasswd,$dbname);
    mysqli_query($dbcnx, "SET NAMES 'utf8'");
    if(!$dbcnx)
    {
        echo ("Ощибка подключения к mySQL");
        exit();
    }
    echo round((microtime() - $start)*1000);


это выполняется 200мс если я правильно посчитал
Пустой файл с echo 234ms тоесть 34 мс код и 200 мс конект к бд.

как это полечить или что я делаю не так.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Payne
Sep 1 2017, 7:13
  
Пост #11



Репутация:   19  
Активист
*

Группа: Пользователи
Сообщений: 293
С нами с: 17-March 06


(RipperR @ Aug 31 2017, 16:01) Перейти к цитате

Нашел я так понимаю одно из узких мест ... а имеено подключение к MySQL bd


        $start = microtime();
    $dbcnx=@mysqli_connect($dblocation,$dbuser,$dbpasswd,$dbname);
    mysqli_query($dbcnx, "SET NAMES 'utf8'");
    if(!$dbcnx)
    {
        echo ("Ощибка подключения к mySQL");
        exit();
    }
    echo round((microtime() - $start)*1000);


это выполняется 200мс если я правильно посчитал
Пустой файл с echo 234ms тоесть 34 мс код и 200 мс конект к бд.

как это полечить или что я делаю не так.


200 мс на самом деле не так уж много. Если Вы боитесь за скорость выборки при количестве записей больше 10к, то используйте индексы для выборки по ключевым полям. Если я не ошибаюсь, MySQL может начинать притормаживать при кол-ве записей больше 300к в таблице, и то это вроде исправили давно.

Можно использовать Redis или Memcache(d) для кеширования частых одинаковых запросов, если количество оперативки позволяет. Накрайняк Sphinx юзать, он конечно, не совсем для кеширования, но в данном случае подойдет, в принципе
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
RipperR
Sep 1 2017, 12:33
  
Пост #12



Репутация:   40  
Постоялец
***

Группа: Пользователи
Сообщений: 1 153
С нами с: 25-March 08


То-есть если процесс подключение к бд в 200 мс это норма ?
Просто я к тому что в основном подключение к бд файле и еще вспомогательном где генеритя таблица в json и уже мы имеем 400 мс а страничка грузится уже 550-700мс.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Payne
Sep 6 2017, 8:08
  
Пост #13



Репутация:   19  
Активист
*

Группа: Пользователи
Сообщений: 293
С нами с: 17-March 06


(RipperR @ Sep 1 2017, 13:33) Перейти к цитате

То-есть если процесс подключение к бд в 200 мс это норма ?
Просто я к тому что в основном подключение к бд файле и еще вспомогательном где генеритя таблица в json и уже мы имеем 400 мс а страничка грузится уже 550-700мс.


200 - это нормально. Попробуйте закешировать выбираемые данные в редисе или мемкеше, оцените прирост в скорости. Ну и старайтесь сделать все запросы на одном соединении, а то опять потеряете в скорости.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 1st November 2024 - 21:04
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст.