现在我正在使用以下命令运行phantomJS
exec('./phantomjs table.js',$op,$er);
表.js
var page = require('webpage').create();
page.open('table.php', function () {
page.render('table.png');
phantom.exit();
});
这达到了目的。但现在我需要使用动态变量,即date
. 那么是否可以在exec
命令行中传递 PHP 或 Javascript 变量以便我可以在其中使用该变量table.js
?
更新
我尝试根据此处发布的解决方案修改我的代码通过 exec 将变量传递给 PhantomJS
exec('./phantomjs table.js http://www.yahoo.com',$op,$er);
表.js
var args = require('system').args;
var page = require('webpage').create();
var address = system.args[1];
page.open(address, function () {
page.render('table.png');
phantom.exit();
});
但这会导致两个问题:
- 整个过程大约需要3-4分钟才能完成
- 之后我收到“找不到服务器”消息
如果我删除修改后的代码,一切都会按预期工作。
更多调试
在table.js里面我用了这个:
var args = require('system').args;
args.forEach(function(arg, i) {
console.log(i+'::'+arg);
});
var page = require('webpage').create();
var address = 'http://www.gmail.com';
page.open(address, function () {
page.render('github.png');
phantom.exit();
});
运行此程序时,我的$op
(来自exec
命令)打印输出:
Array ( [0] => 0::table.js [1] => 1::http://www.yahoo.com )
到现在为止还挺好。但是我一放下面的代码,就遇到了同样的问题
var args = require('system').args;
var page = require('webpage').create();
var address = system.args[1]; // <--- This line is creating problem, the culprit
page.open(address, function () {
page.render('github.png');
phantom.exit();
});
似乎这不是正确的语法。有什么明显我看不到的吗?