Как стать автором
Обновить

Комментарии 12

Спасибо за статью! До 7 версии ещё давно все знал, когда писал на PHP, а вот всё что после уже не следил, спасибо что собрали вcе воедино.

Примерно такая же история, а тут все хорошо расписано и собрано вместе. Автору спасибо!

Подробнее о JIT на php.watch

По ссылке одна куцая картинка - может, имелось в виду это? А так спасибо - когда то возился с исходниками hhvm , где JIT уже давно, не знал, что в стандартный PHP его тоже завезли.

Исправил, спасибо большое!! Именно эта ссылка и была, при смене картинок я ошибся

Лет 20 назад неплохо зарабатывал устанавливая внешние реалищации opcode cache )))

Еще спасибо большое @FanatPHP - в личку мне кинул большое количество грамматических исправлений.

И еще Жеке с моей работы - спасибо! От него узнал, что опубликовали мою статью и указал на еще одну битую ссылку. Не нашел твой ник на хабре)

Есть ли возможность вытаскивать, хранить и запускать opcode? Например, скомпилировать скрипт заранее и распространять в таком виде? И такой же вопрос про машинный код (JIT).

В версиях 5.x было интересное расширение bcompiler, которое позволяло делать это и сохранять в php-файл и нативно запускать php-скрипт (по факту opcode), но при условии что расширение bcompiler присутствует в среде исполнения и скрипт был "скомпилирован" в такой же версии и в такой же архитектуре. Изменение любого условия приводит скрипт в нерабочее состояние.

Это опять история "как бы мне скрыть свой позорный код от заказчика"?

Программы компилируют не для этого.

Так она и так компилируется. Вы же спрашиваете не "как скомпилировать", а как отдать заказчику байткод вместо исходного.

Вопрос про распространение - это не передача заказчику, а условно размещение кода в репозитории и дальнейшее использование (внутри системы, организации или публично).

В частности, проблема с компилированием и использованием на разных архитектурах, версиях и окружении явно должна проявиться. Возможно, есть решение этого вопроса.

Компилируется код в версиях >5.5 под капотом и только в кэш, то есть не хранится на диске рядом с исходником.

У вас логика вверх тормашками

проблема с компилированием и использованием на разных архитектурах, версиях и окружении явно должна проявиться

Разумеется, она и проявится, если класть в репу скомпилированный для определенной версии и архитектуры код, который, действительно не будет работать на других архитектурах :)))

А если класть исходник, то вообще никаких проблем с архитектурами не будет. Как их никогда и не было.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории