Каковы варианты использования V8 в PHP?

4

В PHP встроен движок JavaScript V8, http://www.php.net/manual/en/book.v8js.php. Мне было интересно, какие возможные варианты использования, особенно. учитывая, что PHP является синхронным, а JavaScript является асинхронным.

  • 0
    эта ссылка может помочь вам понять ваш вопрос developerknowhow.com/why-the-v8-javascript-engine-is-so-good
  • 2
    Не уверен, что вы имеете в виду, говоря, что JavaScript асинхронный - это не так. Единственный вариант использования, о котором я могу подумать, - это разгрузить некоторые сложные математические вычисления, поскольку V8 генерирует машинный код / JITs и будет выполнять код быстрее, чем собственный PHP.
Показать ещё 1 комментарий
Теги:
v8

6 ответов

4

Мощная функция этого расширения заключается в том, что один и тот же код можно использовать как на стороне клиента, так и на стороне сервера, повторно используя реализации одного и того же кода в PHP для сторон сервера и js-клиента.

Возможный вариант использования - для проверки валидации сервера и клиента с использованием того же JS-кода. Клиентская сторона, код будет запущен в браузере и на стороне сервера, которую он выполнил с помощью V8JS.

Другими потенциальными применениями могут быть шаблоны или любая другая бизнес-логика, которая необходима как на стороне клиента, так и на стороне сервера.

Кажется, вы все равно будете находиться на неизведанной территории. Я не видел, чтобы какие-либо библиотеки использовали V8JS для чего-либо подобного.

  • 1
    С тех пор я создал библиотеку проверки, которая использовала V8JS. Однако он не покинул прототип гаража. После реализации этого в нескольких проектах я понял, что разработчики PHP не обязательно хотят смешивать логику бэкэнда и внешнего интерфейса, даже если она повторно используется в обоих. Код не очень хорошо сочетается. Кроме того, обычно разработка бэкэнда и внешнего интерфейса выполняется отдельными командами, и разработчики внешнего интерфейса могут иметь собственные предпочтения для проверочных библиотек. Для проверки бэкэнда проще извлечь имена правил, чем вся логика проверки.
  • 1
    Я думал о том, как система валидации будет работать с использованием V8JS, и удивляюсь, почему до сих пор не было полу-популярной системы. Я думаю, что это не очень хорошо работает. Однако есть несколько проектов, в которых используется V8JS: рендер React.js: github.com/reactjs/react-php-v8js рендерер Handlebars: github.com/SinisterMinister/php-barly и рендеринг БЭМ: github.com/zxqfox / PHP-BEM
3

Один из способов использования JS-интеграции в PHP - предоставить простой способ для конечных пользователей безопасно выполнять пользовательский код (скрипты a.k.a.) в приложении на основе PHP. С неявной изоляцией можно ограничить входы и функции, доступные для защиты конфиденциальности пользователей и безопасности системы, позволяя при этом использовать широкий диапазон пользовательских сценариев в контексте сервера.

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

1

Одним из вариантов использования может быть рендеринг на стороне сервера для шаблонов или фреймворков javascript, кратность SSR.

Можно написать свои шаблоны с помощью фреймворка javascript, например Vue.js, или отредактировать его с помощью v8js.

После того, как php отобразит шаблон и отправит его в браузер, фреймворк javascript может выбрать его и сделать его интерактивным.

Двумя преимуществами здесь являются более быстрая загрузка веб-приложений и отсутствие раздражающего флекера страницы javascript.

0

Для строительного искателя, который извлекает полезные данные из HTML, эмулируя время выполнения Javascript, особенно полезно, потому что некоторые данные HTML могут быть скрыты/искажены кодом Javascript. Поэтому, если вы не хотите писать парсер Javascript в PHP самостоятельно - единственный вариант - использовать уже построенный V8-движок с этой целью.

0

PHP и Javascript - это языки, не имеет смысла говорить, что один является синхронным, а другой - нет. Неформально, когда говорят, что это означает, что большинство библиотек вокруг этого языка, использующих ввод-вывод, используют async/sync IO.

В основном языке и V8 ничего не асинхронно.

Зачем его использовать? Javascript на V8 на порядок быстрее, чем каноническая реализация PHP (обратите внимание, что существуют другие реализации PHP, как Facebook HHVM), хотя все еще так же, как и мощный скриптовый язык. Обычно вам нужно будет написать расширение C для PHP, чтобы получить сырую производительность.

-1

Извините, что набросился на древний вопрос, но довольно очевидный вариант использования в эпоху Web 2.0/3.0 будет "когда file_get_contents() просто не сократит его".

Хотя это может и не быть лучшим выбором, PHP также не самый худший выбор для ботов, пауков, скребок и т.д. И все больше веб-страниц не завершено, если JavaScript на них не выполняется/отображается.

  • 0
    Что ты предлагаешь? Извлечение веб-ресурса с использованием V8 не заставит его выполнить настоящий скрипт. Возможно, я полагаю. Тем не менее, лучшей альтернативой будет браузер без перегрева, такой как фантомы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню