Как установить v8js на XAMPP (Windows)

Самый лучший мануал здесь: blog.xenokore.com. НО после всех манипуляций у меня ничего не вышло.

Кратко:

там даны несколько ссылок — какую версию v8js скачать. Дана также ссылка сюда: https://www.apachelounge.com/viewtopic.php?t=6359 — очень полезная ссылка, вы можете запустить phpinfo(); у себя на ксамппе и сверять с теми, что приведены над каждой ссылкой. Наиболее похожая конфигурация — ваша. По этой ссылке, правда, не сам v8js, а v8js, скомпиллированный с php. Ну то есть пхп, а внутри все нужные файлы расширения.

Далее:

Эти файлы идут сюда:\php\:

  • v8.dll
  • icui18n.dll (php7)
  • icuuc.dll (php7)

А эти — сюда:\php\ext\:

  • php_v8js.dll

Мне пришлось качать по этой ссылке https://www.apachelounge.com/viewtopic.php?t=6359, затем просто скопировать все в папку php внутри xampp. Можно вручную найти нужные файлы и загрузить в папку php по одному. Но в готовом наборе оказалось больше файлов v8.dll:

  • v8.dll
  • v8_libbase.dll
  • v8_libplatform.dll

В общем, попытайтесь по-разному.

В php.ini в конец вставляем:

extension=php_v8js.dll

Ну и потом создаете файл, куда пишете код для проверки (я нашла другой, нежели в мануале):

<?php
$start = microtime(true);
$array = array();
for ($i=0; $i<50000; $i++) $array[] = $i*2;

$array2 = array();
for ($i=20000; $i<21000; $i++) $array2[] = $i*2;

foreach ($array as $val) {
 foreach ($array2 as $val2) if ($val == $val2) {}
}
echo (microtime(true)-$start)."\n"; // 8.60s


$start = microtime(true);
$v8 = new V8Js();
$JS = <<< EOT
var array = [];
for (i=0; i<50000; i++) array.push(i*2);

var array2 = [];
for (i=20000; i<21000; i++) array2.push(i*2);

for (key=0; key<array.length; key++) {
 for (key2=0; key2<array2.length; key2++) if (array[key] == array2[key2]) {}
}
print('done.');
EOT;
$v8->executeString($JS, 'basic.js');
echo ' '.(microtime(true)-$start)."\n"; // 3.49s

 

Кладете в папку с файлами (у меня например xampp/htdocs/test), запускаете XAMPP, идете на локальный сервер: http://localhost/test/

У меня выдаёт результат: 1.1380650997162 done. 0.53103089332581

Но пока он выдал результат, пришлось немало помучиться и покопаться.

Все эти файлы:

  • v8.dll
  • v8_libbase.dll
  • v8_libplatform.dll
  • icui18n.dll
  • icuuc.dll

нужно перенести в папку XAMPP!

(я скопировала из папки php)

При перезапуске XAMPP он сам вам будет выдавать попапы с ошибкой и указанием недостающего файла, так что я просто выносила всё из php в корневую — xampp, пока шли ошибки. Ошибки кончились — скрипт заработал!