Сейчас я использую следующую команду для запуска phantomJS
exec('./phantomjs table.js',$op,$er);
table.js
var page = require('webpage').create();
page.open('table.php', function () {
page.render('table.png');
phantom.exit();
});
Это служит цели. Но теперь мне нужно работать с динамической переменной, а именно date
. Так можно ли передать переменную PHP или Javascript внутри командной строки exec
, чтобы я мог использовать эту переменную внутри table.js
?
Update
Я попытался изменить свой код в соответствии с решением, опубликованным здесь Передача переменной в PhantomJS через exec
exec('./phantomjs table.js http://www.yahoo.com',$op,$er);
table.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();
});
Похоже, что это не правильный синтаксис. Что-нибудь очевидное, что я не могу видеть?