Php 将PhantomJS输出流到前端应用程序
我有一个PHP后端应用程序。我知道如何仅使用PHP从简单的phantomjs应用程序获取输出Php 将PhantomJS输出流到前端应用程序,php,html,websocket,phantomjs,Php,Html,Websocket,Phantomjs,我有一个PHP后端应用程序。我知道如何仅使用PHP从简单的phantomjs应用程序获取输出 $response = exec('/path/to/phantomjs myscript.js'); 问题是。。。 我的PhantomJS应用程序工作很长时间(带有循环),并输出当前进度和脚本中的动作,以便于监控 我需要做的是 当用户按下某个按钮时执行phantomjs脚本 使用php/websocket/html5 sse(服务器发送的事件)对其输出进行流式处理,直到完成 思想 我确信PHP对于这
$response = exec('/path/to/phantomjs myscript.js');
问题是。。。
我的PhantomJS应用程序工作很长时间(带有循环),并输出当前进度和脚本中的动作,以便于监控
我需要做的是
有什么建议吗?PhantomJS有一个内置服务器,下面是 但是如果你想使用WebSocket,它也是可行的,我个人发现将Express.js与Socket.io结合使用是轻而易举的事。下面是一个简短的概念代码:
var express = require("express");
var app = express();
var server = require("http").Server(app);
var io = require("socket.io")(server);
var iosocket;
// save websocket connection for later use
io.on("connection", function(socket){
iosocket = socket;
});
// GET request starts PhantomJS work, no matter how long
app.get("/launch-long-phantomjs-process", function(req, res){
res.send("I'm on it!");
var info = [];
var spawn = require('child_process').spawn,
child = spawn('/usr/bin/phantomjs', ['/path/to/phantomjs/script.js']);
console.log("Spawned parser");
// Save incoming data from PhantomJS
child.stdout.on('data', function (data) {
console.log(data.toString());
info.push(data.toString());
});
// Just in case of errors
child.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
// When PhantomJS exits, we can finally send
// collected data to browser via a websocket
child.on('close', function (code) {
iosocket.emit("info", info);
});
});
在这个方案中,PhantomJS只是通过
console.log
将刮取的数据吐回节点。当然,我们可以使用更复杂的方式来桥接PhantomJS和node,比如or。那么您是否能够想出一个解决方案?