Статьи

Быстрый совет: установите Recki-CT в Vagrant Ubuntu Box

Реки что?

Если вы не знаете, что такое 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-движок, на котором вращается ваше приложение.