Full-R
Новичок
Привет, клуб.
В поисках удешевить стоимость сервера я перевел свой framework на strict types и смог реализовать отдельный статический кэш БД.
Из сторонних компонентов есть только перепрограмминованный MMDB Reader и Decoder для Geo IP Max Mind под strict types.
Я также не использую никакие лишние функции PHP. Все работает нативно и без mb_string и iconv. То есть примерно 30% мне требуется от стандартного набора функционала самого языка для запуска framework.
Я получил колоссальную производительность, отстутсвие багов и надежность даже для хостинга за 1.8евро в месяц и время выполнения всего ядра колеблется в пределах 0.07 - 0.1 секунды в зависмоти от нагрузки сервера для сайта с контентом, комментариями и пользователями.
Все хорошо, но я обнаружил, что OpCode cache не работает на Strict Types и PHP Fast CGI + FPM, а также память затраченная на стабильный закэшированный бэкенд плавает на 100-200 Кб.
Логически я понимаю, что для final классов не нужно ключевое слово static для методов и свойств, однако я и это сделал.
Extend отключен, а память все равно неодинаковая. Как это объяснить, если я отключаю все ненужные для PHP функции?
Как правильно посчитать затраченную память? Например PHP наверняка не покажет, как работает handler fopen, если размер файла, который открыт для чтения будет например 100Gb, а доступно памяти в системе около 8Gb так как файл читается частями [0%===<O>===============100%].
Или я ошибаюсь?
В общем, нужен профилировщик, который помог бы вычислить реально затраченные ресурсы так как я нахожу несостыковки и есть подозрения на работу какой-то телеметрии, которую недокументировали.
Также мне нашептали, что static не канает для opcode если его ставить после ключевого слова: protected static - не кэшится, а static protected - кэшится.
В чем сраная разница, если не учитывать некоторых упоротых экслюзивных любителей трактовать работу класса по разному в зависомости от положения ключевого слова?
Много ли хуже реализовывать подскачку класса на базе инжекта методов trait в нужные private, public и protected, а не extend? Использую в основном массивы для стэков данных коллекций, а не объекты и получаю нерельную экономию памяти и быстродействие сравнимое со скомпилированным C++ приложением.
В поисках удешевить стоимость сервера я перевел свой framework на strict types и смог реализовать отдельный статический кэш БД.
Из сторонних компонентов есть только перепрограмминованный MMDB Reader и Decoder для Geo IP Max Mind под strict types.
Я также не использую никакие лишние функции PHP. Все работает нативно и без mb_string и iconv. То есть примерно 30% мне требуется от стандартного набора функционала самого языка для запуска framework.
Я получил колоссальную производительность, отстутсвие багов и надежность даже для хостинга за 1.8евро в месяц и время выполнения всего ядра колеблется в пределах 0.07 - 0.1 секунды в зависмоти от нагрузки сервера для сайта с контентом, комментариями и пользователями.
Все хорошо, но я обнаружил, что OpCode cache не работает на Strict Types и PHP Fast CGI + FPM, а также память затраченная на стабильный закэшированный бэкенд плавает на 100-200 Кб.
Логически я понимаю, что для final классов не нужно ключевое слово static для методов и свойств, однако я и это сделал.
Extend отключен, а память все равно неодинаковая. Как это объяснить, если я отключаю все ненужные для PHP функции?
Как правильно посчитать затраченную память? Например PHP наверняка не покажет, как работает handler fopen, если размер файла, который открыт для чтения будет например 100Gb, а доступно памяти в системе около 8Gb так как файл читается частями [0%===<O>===============100%].
Или я ошибаюсь?
В общем, нужен профилировщик, который помог бы вычислить реально затраченные ресурсы так как я нахожу несостыковки и есть подозрения на работу какой-то телеметрии, которую недокументировали.
Также мне нашептали, что static не канает для opcode если его ставить после ключевого слова: protected static - не кэшится, а static protected - кэшится.
В чем сраная разница, если не учитывать некоторых упоротых экслюзивных любителей трактовать работу класса по разному в зависомости от положения ключевого слова?
Много ли хуже реализовывать подскачку класса на базе инжекта методов trait в нужные private, public и protected, а не extend? Использую в основном массивы для стэков данных коллекций, а не объекты и получаю нерельную экономию памяти и быстродействие сравнимое со скомпилированным C++ приложением.