За последние 24 часа нас посетили 16307 программистов и 1581 робот. Сейчас ищут 1542 программиста ...

PinPIE

Тема в разделе "Прочее", создана пользователем igordata, 27 мар 2016.

  1. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    GitHub https://github.com/igordata/PinPIE

    Дока на русском http://pinpie.ru/ru/manual
    Дока на англ http://pinpie.ru/en/manual




    О

    PinPIE это лёгкий движок маленьких сайтов. Все страницы и обработчики url'ов хранятся в php-файлах. Так же есть возможность кэширования. Механизм кэширования прозрачный и предсказуемый. Просто подключите свои любимые классы, функции, ORM, и можно начинать писать код.

    # Плюшки
    • Лёгкий
    • Быстрый
    • Легко понять
    • Теги: чанки, сниппеты, константы и для статик файлов
    • Всё хранится в файлах, из чего следует:
      • Редактируйте весь контент в своей любимой IDE или текстовом редакторе, со всеми плюшками: подсветкой, автоформатированием, автосохранением, автозагрузкой и привычными хоткеями
      • Полная поддержка дебага включая конкретные номера строк и контроль выполнения скрипта из IDE
      • Поддержка акселераторов даёт сверхнизкое время отклика
      • Дружит с системами контроля версий — все версии вашего контента защищены от потери при редактировании или как-то иначе
      • Удобно деплоить
      • Удобно бэкапить
    • Прозрачный роутинг урлов
    • Конфиг выбирается в зависимосте от имени сервера — удобно разрабатывать с локальным конфигом, деплоить с другим, всё это живёт в проекте и в системе версий
    • Кеширование сниппетов прозрачно контролируется: не кэшировать (дефолтно), кешировать на точное время в секундах и кешировать навсегда
    • Кэшированные сниппеты обновляют своё содержимое автоматически если их файл или файл их детей любого уровня поменялся
    • Управляемые правила кэширования, основанные на HTTP-коде ответа и GET-параметрах чтобы раздельно контролировать кэширование для 200, 404 и других ситуаций
    • Поддержка темплейтов или вывод текста как есть
    • Возможна интеграция с темплейт-движками типа Twig, Smarty, Mustache и др.
    • Поддержка cookie-free серверного шардинга для параллельной загрузки статик контента
    • Автоматическая преминификация для статик файлов (картинки, css, js, и др.)
    • Автоматическая прекомпрессия (gz) для статик файлов (картинки, css, js, и др.)
    • Требует минимального знакомства с PHP и HTML ;)

    # Краткий обзор
    PinPIE спроектирован так чтобы выдавать 100-150 страниц в секунду даже на дешёвом VPS/VDS хостинге. Но его можно использовать и на шаред хостинге.

    PinPIE хранит весь контент в файлах "*.php", которые кэшируются опкод-кэшером, что позволяет инклудить страницы, сниппеты и чанки просто молниеносно.

    В PinPIE используются теги. Теги можно кэшировать. Кэширование легко включается и выключается отдельно для каждого тега. Управление кэшированием тегов очень понятное и простое. При обновлении файлов PinPIE автоматически перекэширует то, что изменилось.
     
    #1 igordata, 27 мар 2016
    Последнее редактирование: 24 апр 2016
    TeslaFeo и VLK нравится это.
  2. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Скачал, посмотрел, но лучше бы посмотрел на гитхабе, просто удобнее. Выложи, это же не трудно.
    Не запускал и предвижу что запуск не ограничится закидыванием в rootdir. Сделай версию под запуск с готовыми страницами и/или добавь отдельную страничку Installation. Я конечно видел во всём этом и конфиг нжинкса и первые шаги, но имеет смысл вынести отдельно.
    Очень много статики.
    По большому счету это просто шаблонизатор с роутингом и кешем.
    Слушай, поясни за страничку давнолоад, я так полагаю ворочается на этом двигле, тогда
    Page time: 0.758ms (это 0,000758 секунды я так полагаю ?)
    Memory: 2 MB (0 Bytes) ( 2 мега, серьёзно ? )
    Запили прохладную, как скатился до такого, было ли это явлением во сне или пришло в процессе наработок, какие планы по развитию и к чему в итоге ты хотел бы прийти ?
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Выложу, когда доделаю доку.
     
  4. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    меня тоже удивило - 2МБ памяти ((:)
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не хочу никого огорчать, но вот этот код:
    Код (PHP):
    выводит те же два мега.

    А учитывая, что даже жирные страницы с большим количеством кода не добавляют потребления, можно предположить, что PHP выделяет 2 мега минимум, дабы (в подавляющем большинстве случаев) дополнительно память выделять не требовалось, ибо это медленная операция.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    256K. у тебя вероятно какой-то жирный auto prepend file есть
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Нету. Могу предположить что виновник это php7



    ЗЫ: Залил на гитхаб. https://github.com/igordata/PinPIE
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    а, на php7 видимо да.
     
  9. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    1.2Mb
    php 5.6
    это я просто изменил свой файл рабочий, вставив вначало
    echo memory_get_peak_usage(true); exit;
    и дальше было много кода...

    а если создать файл с нуля. пустой и написать тоже самое
    echo memory_get_peak_usage(true); exit;
    то выводит 262144
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Я ж привёл полный код одного файла и версию указал. Я-то тут при чем.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    На гилдволе жирнючие страницы тоже не добавляют памяти, т.е. разница между стартовым значением пика и при завершении - ноль байт. Либо два мега для особо жирных страниц, т.е. суммарно 4 МБ.

    Так что я имею все осонования предположить, шта семёрка кушает миниум два мега, если не хватает - увеличивает вдвое. =) Ну или она жрёт по два мега.

    Вообще, если тру убрать, то будет так:
    хорошо это или плохо я не знаю. Я делал штуку, которая работает быстро, инклудит странички и даёт контроль над кешем. Её область применения - маленькие полустатичные сайты.

    Добавлено спустя 12 минут 46 секунд:
    короче я на всяк-всяк убрал тру, и пусть будет фалс.

    Добавлено спустя 2 минуты 8 секунд:
    Код (PHP):
    даёт int(489064)

    Добавлено спустя 2 минуты 41 секунду:
    http://pinpie.ru/en/manual/cache
    http://pinpie.ru/en/download

    Убрал всё от греха, и тотал тоже убрал. Теперь красиво. Хотя по факту он как жрал два мега, так и жрёт.
     
  12. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Круто мне понравилось
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  14. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    CacherDisabled?? кешер который не кеширует? где и зачем его применять?
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это заглушка, которая заставляет всегда перерисовывать сниппет.
    Код (PHP):
    1. $pinpie["cache type"] = "disabled"; 
     
  16. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    это понятно.
    зачем использовать кешер(пусть и фейковый) там где кешировать ненужно?
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чтобы не плодить дополнительной логики, которая будет каждый раз думать об этом, прежде чем выполнить запись или чтение из кеша. Вот заглушка. Вызывается метод, возвращается фалс. А логика для этого случая уже есть и один хрен обязана быть. Удобно же. :D
     
  18. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    я честно непойму.
    о какой ты логике. есть снипет. нужно кешировать - юзаем кешер, нужно отрабатывать его всегда - некешируем.
    ну может у тебя внутри там это как-то юзается. я не смотрел подробно. хз
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Вот именно об этой. Это нужно будет ввести еще одну переменную в конфиге, которая будет отвечать за запрет кеширования, иметь больший приоритет, потенциально вводить в заблуждение, т.к. в одном месте в конфиге задаётся тип кэширования, а в другом - включено оно или нет.

    Я решил, что так очевиднее и проще по всем фронтам.

    Добавлено спустя 10 минут 22 секунды:
    спасибо, что прочитал, кстати. Я буду дальше переводить и выкладывать. Там дофига ещё чего обсудить есть.
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Забубенил перевод доки по конфигу. Кроме примера. http://pinpie.ru/ru/manual/config
    даже анкоры расставил.
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ну тут просто: список методов. Их немного. http://pinpie.ru/ru/manual/methods
    --- Добавлено ---
    Список тегов и их возможностей http://pinpie.ru/ru/manual/tags

    [[chunk]]
    Чанки - это чистый текст. Просто текст. Хранятся в php файлах. Выводятся как есть.

    [[$snippet]]
    Сниппеты - это php-код, выполняется перед выводом. Может кешироваться. Для этого надо просто указать время в секундах или восклицательный знак: [[5$rand]] например. Очень удобно определять, кешируется или нет - кешиуется, если сам или хоть один из родителей кешируется.

    Закешированный сниппет обновляется сам, если файл сниппета или любого из его детей поменялся. Очень удобно. Очень. Поправил файл - всё само перерисовалось гарантировано.

    [[%static=file]]
    Это для вывода картинок там всяких, скриптов js или css файлов. Сами подменяются на нужные теги, имеют в урле волшебный хэш, чтобы кешировалось пока файл не поменяется, а когда поменяется, поменяется и кэш и тогда браузер перекеширует. Очень удобно Очень. Следить ни за чем не нужно. Гарантировано кэшиуется браузером. Гарантировано обновляется при изменении файлов. Ваще кайф.
    --- Добавлено ---
    http://pinpie.ru/ru/manual/cache

    Кэш удобный и предсказуемый.

    Сниппеты кешируются на указанное колличество секунд. Они автоматически перерисовываются через это время или если файл сниппета или файлы любых вложенных в него тегов на любой глубине были отредактированы. Само всё. Автоматом. Круто же. Удобняк.

    Вот три варианта кеширования:
    • [[$some_snippet]] — не кешировать, сниппет будет выполняться каждый раз
    • [[3600$some_snippet]] — сниппет закеширован на один час
    • [[!$some_snippet]] — закэширован навечно. Сниппет кэшируется на PHP_INT_MAX секунд.
    Соотв. если файл сниппета подредактировать - он перерисовывается. Если изменить файл вложенный где-то там в глубине - тоже.

    Из коробки умеет кешировать в файлики, Memcache или APC. Апц конечно жуть какой быстрый. Даже наверное незаконно быть таким быстрым, какой он быстрый.


    Блин, неужели это не круто? Круто же :D
     
    #21 igordata, 20 апр 2016
    Последнее редактирование: 19 апр 2016
  22. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    А какой-то пример одностраничника будет? :D
    --- Добавлено ---
    Я извиняюсь, вроде в первом посте и мало текста, а как-то и не заметил...
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  24. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Я ж так понимаю, всякие визитки на нем писать как раз самое оно?
    Хочется что-то более простого и чтоб ничего лишнего не было. Всякие гигантские цмски не хочется использовать под простые нужды, а писать с нуля немного долго, вот и давно присматриваюсь к твоему творению
     
  25. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    Самое то на нем писать сайт, когда не хочется переделывать что-то готовое "под себя". Ну и быстродействие на очень высоком уровне.