1

Я использую рамки Zend и phantomJS для рендеринга изображений для сайта, над которым я работаю. У меня есть сценарий прослушивателя задания, который петли и ищет задания в очереди. При поиске задания он использует данные из сообщения о задании для создания команды phantomJS и выполняет команду с помощью команды EXEC php.Запуск PhantomJS как daemon в OS X

Этот процесс отлично работает, если я запускаю слушателя заданий из командной строки. Однако, если пользователь-демон (веб-пользователь в OS X) пытается запустить phantomJS, ничего не происходит. Нет сообщения об ошибке, ничего.

Я попробовал несколько вещей, в том числе
1. добавив следующую строку в sudoers демон ALL = NOPASSWD:/USR/бен/phantomjs
2. давая phantomjs и его разрешения родительского каталога 777.
3. дает право собственности демон phantomjs

Однако, несмотря на все это, я не могу выполнить phantomJS от пользователя Daemon.

Если кто-нибудь может указать мне в правильном направлении или добавить некоторые предложения, я был бы очень благодарен.

Спасибо заранее,

Dan

+0

Пробовал работает phantomjs с '--debug = yes'? Кроме того, вы пытались запустить его в качестве пользователя-демона с sudo из CLI? 'sudo -u daemon phantomjs --debug = yes ...'. Может быть проблемой среды (NODE_PATH?). – robertklep

ответ

2

Вы можете попробовать запустить phantomjs скрипт как сервис, а не запустить его EXEC команды.

Использование встроенного модуля веб-сервера под названием Mongoose, скрипт PhantomJS может запускать веб-сервер. Это предназначено для упрощения связи между скриптами PhantomJS и внешним миром и не рекомендуется использовать в качестве общего производственного сервера.

Для получения информации о том, как работает встроенный веб-сервер, см here

Вот пример о том, как PhantomJS сценарий может запустить веб-сервер.

var server = require('webserver').create(); 
var service = server.listen('127.0.0.1:8080', function(request, response) { 
    response.statusCode = 200; 
    response.write('<html><body>Hello!</body></html>'); 
    response.close(); 
}); 

После того, как службы запущены, он может отправить в качестве ответа объект JSON, который может быть легко интерпретирован PHP.

Чтобы прослушать любой домен server.listen('8080', ....)

заголовки HTTP набор ответов response.setHeader("Access-Control-Allow-Origin","*");

Смежные вопросы