Из node запустить phantomjs через cron

341
15 ноября 2017, 03:00

Здравствуйте. Есть скрипт 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) 
  } 
});

READ ALSO
querySelectorAll javascript [дубликат]

querySelectorAll javascript [дубликат]

На данный вопрос уже ответили:

282
Получить ячейку таблицы по индексам

Получить ячейку таблицы по индексам

Скажите, пожалуйста, как можно получить элемент ячейки таблицы (HTMLTableDataCellElement), если я знаю индексы строки и столбца, на пересечении которых...

337
Ajax форма reset

Ajax форма reset

Насколько я понимаю, trigger("reset") должен очищать поля формы, после отправкиПочему этого не происходит ?

287
Как привести к дате строку /Date(-62135575200000)/?

Как привести к дате строку /Date(-62135575200000)/?

Получаю от сервера данные в таком виде /Date(-62135575200000)/, что это за формат времени? Как из него получить читаемую дату используя javascript?

282