WebShake.RU

Блог о разработке

PHP Reflection API

Всем привет. Поговорим для начала о том, что же вообще такое рефлексия (от англ. reflection - отражение) в программировании. Этот термин пришёл к нам из психологии. Там данное слово означает способность человека к самоанализу, взгляду на собственно самого себя, оценке своих поступков, мыслей и прочего вот этого всего. Алсо, человек в процессе всего этого может ещё и изменять свою точку зрения, что приведёт к изменению его поведения. Конечно, наверняка есть более подходящее понятие, но для нас главное понять суть.

Попробуем теперь перенести это понятие из жизни человека на время выполнения программы. Получим что-то типа того, что программа во время своего выполнения может в реальном времени «узнавать» о своём состоянии и изменять своё поведение. Википедия же предлагает следующее определение: "Рефлексия означает процесс, во время которого программа может отслеживать и модифицировать собственную структуру и поведение во время выполнения."

Читать далее

@ivashkevich at 2016-12-04 07:37:33

1 27 0

Разработка/Backend, Разработка/Веб

php, reflection, reflection api

Управление памятью в PHP. Циклические ссылки и сборщик мусора

Ссылки на статьи этой серии:
Управление памятью в PHP. Начало
Управление памятью в PHP. Передача в функцию, классы, массивы
>Управление памятью в PHP. Циклические ссылки и сборщик мусора

Всем привет! В предыдущих статьях мы рассмотрели структуру zval, разобрались как именно происходит присваивание и передача в функцию, рассмотрели разницу для разных типов. В предыдущих уроках мы рассматривали ситуации, когда вместе с удалением всех имён для какого-либо значения происходило уменьшение числа ссылок на значение до 0. В результате чего значение благополучно удалялось. Однако так происходит далеко не всегда, и об этих ситуациях мы сегодня и поговорим.

Читать далее

@ivashkevich at 2016-11-26 15:33:32

1 59 0

Разработка/Backend, Разработка/Веб

php, garbage collector, zval, memory

Управление памятью в PHP. Передача в функцию, классы, массивы

Ссылки на статьи этой серии:
Управление памятью в PHP. Начало
>Управление памятью в PHP. Передача в функцию, классы, массивы
Управление памятью в PHP. Циклические ссылки и сборщик мусора

В предыдущей статье мы познакомились с механизмом copy-on-write в PHP, благодаря которому копирование значений происходит только тогда, когда это действительно необходимо. Теперь поговорим о том, как реализована передача значений в функцию, о передаче и присваивании объектов и массивов.

Читать далее

@ivashkevich at 2016-11-22 13:57:54

1 81 0

Разработка/Backend, Разработка/Веб

php, zval, memory

Управление памятью в PHP. Начало

Ссылки на статьи этой серии:
>Управление памятью в PHP. Начало
Управление памятью в PHP. Передача в функцию, классы, массивы
Управление памятью в PHP. Циклические ссылки и сборщик мусора

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

Читать далее

@ivashkevich at 2016-11-19 17:37:41

1 98 0

Разработка/Backend, Разработка/Веб

php, zval, memory

Ускорение блога на WordPress с помощью Varnish

Данная статья является кусочком этой статьи — https://webshake.ru/post/206. И рассказывает о том, как быстро и просто ускорить сайт на WordPress с помощью Varnish, без лишней воды. Конкретные действия и результат.

Было — стало

Читать далее

@ivashkevich at 2016-10-09 13:22:57

1 165 0

Разработка/Backend, Разработка/Веб, Администрирование/Серверы

varnish, wordpress

Установка memcached для PHP 7 в Debian/Ubuntu

Для установки нам потребуется добавить PPA-репозиторий ondrej/php. О том, как это сделать, я писал вот здесь — Установка PHP7 в режиме php-fpm на Debian 8 из пакетов.

Читать далее

@ivashkevich at 2016-10-09 13:10:40

1 230 0

Разработка/Backend, Разработка/Веб, Администрирование/Серверы

cache, memcached, php

Класс-сервис для кэширования данных на PHP

Всем привет, хотел бы поделиться небольшой своей наработкой — классом, который использую в качестве сервиса для кэширования данных в PHP. В приведенном примере в качестве хранилища для кэша используется memcached. Однако, данный класс довольно легко модифицировать и использовать в качестве хранилища хоть жёсткий диск, предварительно сериализовав кэшируемые данные, если это требуется. Сам класс создаётся другим-классом фабрикой и используется на протяжении всей жизни приложения. Вы же можете сделать его синглтоном.

Читать далее

@ivashkevich at 2016-10-09 13:08:05

1 96 0

Разработка/Backend, Разработка/Веб

cache, development, memcached, php

http/2 server push — пушаем только при первом посещении

В своей прошлой статье я показал реализацию http/2 server push. Однако, nghttp2 не умеет определять наличие кэша на клиенте и в приведенном примере, независимо от того, имеется ли у клиента файл, мы его пушали. Таким образом, для повторных соединений передавалось больше трафика, чем до того, как мы включили server push.

Читать далее

@ivashkevich at 2016-10-09 12:25:38

1 113 0

Разработка/Backend, Разработка/Веб, Администрирование/Серверы, Администрирование/Прочее

http2, server push, varnish

Окна в мире Аналитических функций. Часть 1. Введение в аналитические функции

Эта статья является переводом статьи из журнала Oracle, который публикуют каждые два месяца. Ссылка на оригинал — http://www.oracle.com/technetwork/issue-archive/2013/13-mar/o23sql-1906475.html
Первая часть является вводной статьей в аналитические функции. В которой показано, как и какие задачи можно решать с помощью аналитических функций.
В последующих частях будет раскрыта тема window_clause в аналитических запросах.

Читать далее

@murr31 at 2016-10-09 12:18:27

2 115 0

Разработка/Backend, Администрирование/Базы данных, Администрирование/Прочее

oracle, sql

Реализуем http/2 server push с помощью nghttp2

Всем привет, сегодня я расскажу о том, как настроил server push на своём сайте и добился увеличения скорости рендеринга страниц. Для начала о том, что же такое Server Push в HTTP/2. Это технология, позволяющая серверу «протолкнуть» дополнительные данные клиенту, в момент запроса основного документа. То есть в обычной ситуации запрашивает браузер html-страничку, затем обрабатывает её и приходит к выводу, что ему для корректного отображения необходимо подгрузить дополнительные файлы: стили, скрипты, изображения. После чего скачивает их и отображает конечный результат. Server push позволяет отправить дополнительные файлы уже в момент получения основного документа, и они уже будут иметься в кэше, когда они потребуются браузеру. За счёт этого возрастает скорость загрузки сайта.

Читать далее

@ivashkevich at 2016-10-03 16:11:30

1 212 0

Разработка/Backend, Разработка/Веб, Администрирование/Серверы

http2, nghttp2, nghttpx, server push