timo-71

Рейтинг
63
Регистрация
19.09.2018

Может в этом дело: Замечание: Дополнительная настройка на Windows с PHP 7.4.0

Пхп в консоли отличается. lib☝sqlite

phpinfo 3.29

php -a 3.30.1

ArbNet:
поэтому и существуют шаблонизаторы, они упрощают работу, но замедляют скорость генерации страницы.

Профилирование. Кстати рекомендую сразу включить этот функционал в ваш движок.

Class Aapp\Response\RenderHtml ready	11.09 ms	0.63 ms	1.19/2.00, mb

Start render page by TWIG 11.12 ms 0.03 ms 1.19/2.00, mb
TWIG loaded 17.64 ms 6.52 ms 1.76/4.00, mb
TwigExtension loaded 17.75 ms 0.11 ms 1.76/4.00, mb
HTML ready 19.60 ms 1.85 ms 1.89/4.00, mb
Js/Css included 20.10 ms 0.49 ms 1.93/4.00, mb
Debug data 20.11 ms 0.01 ms 1.93/4.00, mb
Profiler 20.12 ms 0.01 ms 1.93/4.00, mb #последняя операция перед
echo $this->html;

Сколько там? 9 мс. Не так то и много. В вашем случае, хтмл так же надо собрать и хмл обработать - какие то ресурсы потребуются.

Тут же вам пытаются донести:

1. если телегу поперед лошади запрягать, обычно ничего хорошего не получается. Сначала структура приложения, обработка ошибок, Exception, обработка запроса (урл, хеадеры, тип запроса, куки и т.д.), автолоадер, роутер, идентификация пользователя, механизмы обработки роутов, механизмы удобной работы с данными и т.п. скучные дела. И только потом сборка и отгрузка хтмл

2. Гибкое управление компонентами хтмл вполне достижимо без хмл. Данные собранные в ходе обработки запроса + шаблонизатор. Как правило, достаточно документированный, что бы им пользовались и разработчики под ваш движок и продвинутые редакторы сайта. Этого вполне достаточно.

switch($type){

case 'TWIG':
$this->twig_out();
$this->html_replace();
$this->is_debug();
break;

case 'PHP':
$out = Core::outget();
require $this->tpl ;
exit(0);
break;
}
echo $this->html;

Не нравится шаблонизатор? Нативный пых: require $this->tpl ;


Пример из Phalcon PHP Framework
<link rel="shortcut icon" type="image/x-icon" href="<?php echo $this->url->get('img/favicon.ico')?>"/>
</head>
<body>
<div class="container">
<?php echo $this->getContent(); ?>
</div>


---------- Добавлено 07.12.2019 в 11:54 ----------

Sly32:
но это всяко интереснее чем читать темы про то почему не виден тэг или в сотый раз про то почему не работает Вордпрес!

Аналогично

ArbNet:
Я не хочу приходить к банальным шаблонизаторам

А дальше? В итоге все равно хтмл отдавать. ХМЛ, в терминах php, суть std/array. Смысл движку после манипуляций в админке std/array писать в хмл. А потом, чтобы отдать хтмл пользователю хмл обратно парсить в std/array. Лишняя операция. Объект после манипуляций в админке пишем в БД (монга рулит тут). А юзеру отдаем результат как Ф( Запрос, Объект, Контент ).

Ф это, не функция пхп, а абстрактное представление.

Типа имеем объект (пардон за объем, но это еще сильно сокращенный)

[title] => **********

[tpl] => Array
(
[type] => TWIG
[area] => /home/web/domains/1_local/var/tpl/twig/**********/
[template] => page.twig
)

[charset] => utf-8
[lan] => ru
[upload_image] => /home/web/domains/1_local/public/files/
[upload_image_web] => /files/
[good_tpl] => Array
(
[area] => /home/web/domains/1_local/etc/subs/www/tpl/
[goodslider] => goodslider.twig
[category_list] => catlist.twig
[good_list] => goodlist.twig
[good_card] => goodcard.twig
[mail] => mail.twig
)

[slider] => Array
(
[js] => assets/vendor/node_modules/tiny-slider/dist/min/tiny-slider.js
[css] => assets/vendor/node_modules/tiny-slider/dist/tiny-slider.css
[selector] => tiny_slider
)

[content_components] => Array
(
[0] => content
[1] => aside
[2] => article
[3] => btm_content
[4] => h1
[5] => before_cathit
)
[css_list] => /assets/themes/def/css/custom.min.css

и отдаем его в шаблоне [template] => page.twig

используя шаблоны для листинга/карточек и др приблуд магазина

[area] => /home/web/domains/1_local/etc/subs/www/tpl/

[goodslider] => goodslider.twig
[category_list] => catlist.twig
[good_list] => goodlist.twig
[good_card] => goodcard.twig
[mail] => mail.twig

для субдомена www, соответсвенно для урюпинск.сайт.ру шаблоны будут искаться в

/home/web/domains/1_local/etc/subs/урюпинск/tpl/ если нет, то дефолтные

ArbNet:
А как же стили? Ах ...

Отличная постановка задачи. Надо ее решать.

ArbNet:
Как и обещал записал видео обзор с пояснениями

Многаминут. Но, по диагонали пролистал. Был 17-м. Явно видно, что это не фреймворк, а попытка сделать CMS. Вариантов внедрить кнопку/радио/селект море. Как и поменять местами майн и сайтбар.

ArbNet:
Лучше обратите внимание на:
1. Базовый функционал любого фреймворка:

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

Если базовый функционал оставить на потом - это называется решать задачу с конца. И не взлетит🙅

Один, не страшно;) Если использовать уже изобретенные велосипеды. Хотя бы Гит и локальный репозитарий для начала

"repositories": [{
  "type": "path",

"url": "путь к репозитарию",
"options": {"symlink": true},
"autoload": { "psr-4": { "Cms\\": "src/"}
}

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

composer require phpoffice/phpspreadsheet

use PhpOffice\PhpSpreadsheet\Spreadsheet;
$spreadsheet = new Spreadsheet();

Или меньше манипуляций, но быстрее:

"require": { "box/spout": "^3.0"

Ну и соответственно:

require _VENDOR . 'autoload.php';

Само собой, потом, когда есть что показать, все открываем на Гите, что бы

composer require SNDL
и вуаля, вот он сайт.☝

Уверяю, это вариант не без изъянов, но лучше нет🍿

Настоятельно рекомендую делать все то, что полагается иметь на борту фреймворка в первую очередь. Или использовать любой из доступных (yii, laravel , symfony) и переименовать тему CMS SNDL.

---------- Добавлено 06.12.2019 в 21:01 ----------

Sly32:
bladе ларавеловский

Я пропустил 😂

Sitealert:
И в то же время если ттфб 50 мс, а взаимодействовать с сайтом можно будет только через 6 секунд, из-за кучи скриптов, – это действительно трэш.

Это да. Следующим этапом, решить увлекательную задачу закрасить прямоугольнички начиная с первого. Ну и 100 из 100 само собой (без внешних)

Подходы могут быть разные, кому то по барабану. Я за скоростной сайт.🍿

Stek:
Я хоть минуту подожду.

Хозяин-барин. Если сайты делаете, то фактор ттфб исключите;) Это не важно для сайта. Покупатель может подождать

Stek:
Эффективность магазина зависит не от скорости, а от уникальности товара.

Если вы этим оправдываете то, что делаете, то мне жаль. А по мне, повторю:

Все, что на магазине в 20000 товаров, отдает первый байт за более чем десятки мс, при на ресурсах 1гиг памяти, в топку



---------- Добавлено 05.12.2019 в 01:34 ----------

И добавлю, мне полтинник и первый сайт (php, mysql, он лайн заказ, загрузка CSV 10к товаров ) был в 2004 году

ArbNet:
я хочу знать как автоматически правильно надо настраивать оптимизацию

Кстати о СЕО. Вы вполне, можете автоматизировать СЕО, поняв семантику запроса. Например, зная 2 слова "Фреймворк SNDL", за 10 сек можно узнать про что это:

Данные на основе ТОП-100 Яндекса

Попали в результат "фреймворк" и "фреймворкa" а не должны были, если бы лемматизация правильно сработала. pymorphy2 накосячил

видимо не знает такого слова:)

Aisamiery:
у них по сути тоже говнофреймворк, но они обещают это исправить в следующем году и внутри системы уже будет 3 фреймворка =))))

😮 А что будут делать те, кто купил сайт на Битриксе в промежуток между сегодня и релизом. Не говоря о тех, кто это сделал ранее. В обратную совместимость не особо верю🍿

Иными словами, ТС вовремя - назрела модернизация рунета. Если даже Битрикс на 3-х фреймворках грозится обновиться😂

ArbNet:
1. В движке есть узлы.
Узел - это директория с 1м php классом если нужны функции, генерация данных и тд.

Это все давно уже есть. Ваш хмл лишняя сущность. Конфигом для сайта и документа + шаблон. Которые редактируются из админки.

Лучше обратите внимание на:

1. Базовый функционал любого фреймворка:

  • Обработка запроса (Пост, Пут, Гет, Куки, Заголовки)
  • Роутер в зависимости от запроса. Гибкий.
  • Автолоадер ( лучший вариант от композера ). Подключение библиотек (типа:
    use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
    
  • foreach ($reader->getSheetIterator() as $sheet) { ...
  • безопасность - авторизация, токены
  • пользователи и роли
  • слой данных.
  • внятные механизмы для роутов. По факту, не важно как их назвать. Фактически это, все что между обработанным запросом и ответом. Так что любой сайт это модный mvc, просто иногда куски вьюхи уже в контроллере и моделе :D
  • респонзе - грамотный ответ на рекьюест. Заголовки (200, 404 и т.д.), сам ответ.

Все фреймворки это делают. Кто то лучше, кто то хуже.

2. Чего, не хватает. Тренды.

В параллельной теме о дублях правил в цсс рассуждают.

О скорости загрузки много говорят.

СЕО ориентированность тоже не последний запрос.

По мне, так и приложиться нужно туда.

  • Все, что на магазине в 20000 товаров, отдает первый байт за более чем десятки мс, при на ресурсах 1гиг памяти, в топку

  • $ ab -n 100 -c 3 ****
    .....
    Non-2xx responses: 100
    Requests per second: 101.70 [#/sec] (mean)
    Time per request: 29.499 [ms] (mean)
    Time per request: 9.833 [ms] (mean, across all concurrent requests)
    Transfer rate: 6416.58 [Kbytes/sec] received
    Connection Times (ms)
    min mean[+/-sd] median max
    Connect: 0 1 4.0 0 29
    Processing: 14 28 12.9 25 72
    Waiting: 0 25 13.1 21 68
    Total: 14 29 13.7 27 72
  • Удержание нагрузок

  • $ ab -n 10000 -c 100 *****
    Non-2xx responses: 10000
    Requests per second: 117.30 [#/sec] (mean)
    Time per request: 852.508 [ms] (mean)
    Time per request: 8.525 [ms] (mean, across all concurrent requests)
    Transfer rate: 7401.54 [Kbytes/sec] received
    Connection Times (ms)
    min mean[+/-sd] median max
    Connect: 0 4 22.6 0 364
    Processing: 252 845 132.9 833 1495
    Waiting: 18 838 131.1 825 1491
    Total: 373 849 132.2 835 1502

    Percentage of the requests served within a certain time (ms)
    50% 835
    66% 885
    75% 921
    80% 946
    90% 1012
    95% 1080
    98% 1181
    99% 1233
    100% 1502 (longest request)
Sly32:
Aisamiery :

Во-вторых, на сугубо мой личный взгляд стек не подходящий.

Есть предложения? на данной стадии все гибко еще. Например Keras заюзать для распознавания, для создания курсов - Openedx

Я так понял, претензии в основном к выделенному:

Aisamiery:
проект с комьюнити на популярных технологиях
Всего: 541