Я использую PhantomJS для Windows и получаю доступ к файлам через командную строку. Теперь я хочу установить его на сервере, на котором я работаю на локальном хосте, поэтому хочу, чтобы он был установлен на Apache, чтобы я мог интегрировать Phantom с моими html и PHP, которые будут использоваться на веб-странице. Я использую Windows 8.1 и Apache Server для localhost.
Могу ли я на самом деле это сделать? Как использовать его в веб-сервисах сейчас? Как я буду использовать его, если мне нужно сделать свою онлайн-сеть? должен ли я попросить моего хостинг-провайдера разместить эту вещь на сервере для меня?
Я использую phantomJS для разработки веб-службы, которая берет URL-адрес в качестве входных данных и возвращает файл изображения на снимке экрана веб-сайта.
«Установка» PhantomJS просто добавляет свой путь к переменной среды PATH.
Поскольку вы используете php, вы будете вызывать PhantomJS из вашего php-скрипта, как показано здесь, где вам нужно предоставить полный путь к исполняемому файлу PhantomJS. Вы также можете использовать putenv
для расширения PATH непосредственно из php, как показано здесь .
Вы можете вернуть что-то из скрипта PhantomJS в переменную $output
exec
и затем проанализировать ее.
PhantomJS предоставляет модуль веб-сервера . Вы можете написать скрипт, который прослушивает запросы, создает page
по запросу и возвращает изображение. Вы как-то запускаете скрипт при запуске или вместе с apache. Также можно написать оболочку, чтобы вы могли запускать ее как службу Windows. Возможно, вы сможете передавать запросы через Apache, чтобы PhantomJS не был полностью открыт снаружи.
Хотя этот вариант немного вероломный, потому что PhantomJS может потерпеть неудачу, и тогда вам понадобится какой-то механизм возрождения. Ваш скрипт также может столкнуться с утечкой памяти.
Оба указанных параметра не зависят от того, как вы возвращаете изображение. Есть несколько возможностей.
render
страницу в файл. Затем вы можете отправить имя файла клиенту, который впоследствии может запросить его. Это требует двух запросов. renderBase64
для получения данных обычного изображения. Теперь вы можете отправить данные изображения непосредственно в ответ, и клиент может поместить его в DOM через data:
-URI . //throws a lot of errors because searching some libraries $cmd = 'unset DYLD_LIBRARY_PATH ;'; $cmd.= ' /abs/path/to/phantomjs'; $cmd.= ' /abs/path/to/script.js'; //set environment variable to node source putenv('PATH=/abs/path/to/node/bin/'); //now exec the cmd and pipe the errors to stdout exec($cmd.' 2>&1', $output); //and output the results print_r($output);
вот ответ из приведенного выше URL-адреса. Я изменил его в соответствии с моими дорожками
<?php $cmd = ' ./ScreenShotWeb/phantomjs'; $cmd.= ' ./ScreenShotWeb/shot.js'; putenv('PATH=./ScreenShotWeb/'); exec($cmd.' 2>&1', $output); print_r($output); ?>
Я пытаюсь запустить это, но он дает следующее
Массив ([0] => '.' Не распознается как внутренняя или внешняя команда, [1] => оперативная программа или командный файл.)
в моей корневой папке (C: / xampp / htdocs) есть папка ScreenShotWeb, где я разместил EXE из PhantomJS + все файлы.