在OS X中运行PhantomJS作为守护进程


Running PhantomJS as daemon in OS X

我正在使用Zend框架和phantomJS为我工作的网站渲染图像。我有一个作业侦听器脚本,它循环并在队列中查找作业。在找到作业后,它使用作业消息中的数据来构建phantomJS命令,并通过php的EXEC命令。

如果我自己从命令行启动作业监听器,这个过程会非常有效。但是,如果守护进程用户(OSX中的web用户)尝试运行phantomJS,则不会发生任何事情。没有错误消息,什么都没有。

我尝试了几种方法,包括
1.将此行添加到sudoers守护进程ALL=NOPASSWD:/usr/bin/fintomjs
2.赋予phantomjs及其父目录777权限
3.赋予守护进程phantomjs的所有权

然而,尽管如此,我还是无法从Daemon用户那里获得execute phantomJS。

如果有人能为我指明正确的方向或提出一些建议,我将不胜感激。

提前感谢

Dan

您可以尝试像服务一样运行phantomjs脚本,而不是通过EXEC命令来运行它。

使用名为Mongoose的嵌入式web服务器模块,PhantomJS脚本可以启动web服务器。这是为了方便PhantomJS脚本与外部世界之间的通信,不建议用作通用生产服务器。

有关嵌入式web服务器如何工作的信息,请参阅此处

这里有一个关于PhantomJS脚本如何启动web服务器的示例。

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","*");