Здравствуйте. Есть скрипт phantomjs открывающий и делающий скриншот страницы. Его нужно запустить из nodejs. Нужно запускать по заданию каждую минуту, но тестирую на 10 секундах. Моя конструкция срабатывает только один раз, остальные нет.
Скрипт phantomjs
var webPage = require('webpage');
var page = webPage.create();
page.viewportSize = {
width: 1920,
height: 5000
};
page.open("http://localhost:3000/", function start(status) {
console.log("status", status);
page.render('test1.jpeg', {
format: 'jpeg',
quality: '100'
});
phantom.exit();
});
Сам cron собственно:
var Cron = require('cron').CronJob;
var i = 0;
var job = new Cron({
cronTime: "*/10 * * * * *",
onTick: function() {
console.log("iteration is ", i);
var render = require('../tests/initphantom');
i++;
}
});
job.start();
И методом дедукции я выяснил, что проблема именно здесь в скрипте, который вызывает shell команду для скрипта phantom. Как я понял, я создаю childprocess, который не заканчивается и блочит последующее выполнение крона. При этом в документации node имеется метод subprocess.kill, который не работает на линуксе. Как можно решить эту проблему?
Собственно вызов phantom
var path = require('path');
var childProcess = require('child_process');
var phantomjs = require('phantomjs');
var binPath = phantomjs.path;
var childArgs = [
path.join(__dirname, '/phantomTest.js')
]
module.exports.rendr = childProcess.execFile(binPath, childArgs, function(err, stdout, stderr) {
if (err) {
console.log("err in childProcess", err)
}
});
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости