Реки что?
Если вы не знаете, что такое Recki-CT, посмотрите оригинальный пост @rcmaxell или репозиторий , мы не будем здесь углубляться. Этот быстрый совет просто покажет вам, как установить его на коробку Homestead Improved, так же, как мы делали это раньше с другим программным обеспечением.
Шаг 1 — Усадьба улучшена
Прежде всего, запустите экземпляр Homestead Improved .
Дайте ему новый виртуальный хост, вот так:
- map: test.app to: /home/vagrant/Code/recki
Загрузите виртуальную vagrant ssh
и загрузите в нее vagrant ssh
.
Шаг 2 — JitFu
Recki-CT требует JitFu для установки.
В соответствии с инструкциями выполните следующие команды по порядку, пока вы находитесь в виртуальной машине.
sudo apt-get install bison flex texinfo git clone git://git.sv.gnu.org/libjit.git libijt-fu cd libjit-fu ./auto_gen.sh ./configure --prefix=/opt make sudo make install git clone https://github.com/krakjoe/jitfu cd jitfu phpize ./configure --with-jitfu=/opt make sudo make install sudo su echo "extension=jitfu.so" >> /etc/php5/fpm/conf.d/20-jitfu.ini echo "extension=jitfu.so" >> /etc/php5/cli/conf.d/20-jitfu.ini exit sudo service nginx restart sudo service php5-fpm restart
Чтобы увидеть, успешно ли мы его установили:
cd ~/Code git clone https://github.com/Swader/publicinfo recki mv recki/public/index.php recki/ touch recki/recki.php
Откройте recki.php
и вставьте в него следующее содержимое:
<?php use JITFU\Context; use JITFU\Type; use JITFU\Signature; use JITFU\Func; use JITFU\Value; $context = new Context(); $integer = Type::of(Type::int); $function = new Func($context, new Signature($integer, [$integer]), function($args) use($integer) { $zero = new Value($this, 0, $integer); $one = new Value($this, 1, $integer); $two = new Value($this, 2, $integer); /* if ($arg == 0) return 0; */ $this->doIf( $this->doEq($args[0], $zero), function() use ($zero) { $this->doReturn($zero); } ); /* if ($arg == 1) return 1; */ $this->doIf( $this->doEq($args[0], $one), function() use($one) { $this->doReturn($one); } ); /* return $function($arg-1) + $function($arg-2); */ $this->doReturn( $this->doAdd( $this->doCall($this, [$this->doSub($args[0], $one)]), $this->doCall($this, [$this->doSub($args[0], $two)]))); }); $function->dump("Fibonacci"); var_dump($function(40)); /* __invoke with magicalness */ ?>
Если вы перейдете к test.app:8000
сейчас, вы должны увидеть поддержку JitFu на экране PHPInfo. Если вы перейдете к test.app:8000/recki.php
, вы должны получить int 102334155
качестве вывода довольно быстро.
Шаг 3 — клонировать и создать
Далее нам нужно клонировать репо Recki и загрузить зависимости с помощью Composer.
cd ~/Code rm -rf recki git clone https://github.com/google/recki-ct recki cd recki composer install
Шаг 4 — Тест
Чтобы увидеть, работает ли он, просто запустите примеры из командной строки:
php examples/01-basic-usage.php
или через браузер:
test.app:8000/examples/01-basic-usage.php
Это все, что нужно сделать. Теперь вы можете сосредоточиться на брутальной оптимизации вашего PHP-кода в определенных частях без необходимости заменять весь PHP-движок, на котором вращается ваше приложение.