Я пытаюсь запрограммировать Cron Job, который выбирает некоторые данные с нескольких веб-сайтов.Сценарий использует phantomjs
, который запускает файл js, отвечающий за локальное сохранение содержимого каждого веб-сайта в файл.
Моя команда задания cron:
/usr/local/bin/php /home/user/public_html/fetch.php >> /home/user/public_html/fetch-log.txt
fetch.php
ini_set('max_execution_time', 300);
require_once 'Utils.php';
$sources = Utils::get_sources();
foreach ($sources as $source) {
$cmd = "/home/user/bin/phantomjs get-website.js '$source->url' $source->id";
exec($cmd);
}
echo date("Y-m-d H:i:s") . ">> Done fetching sources\n";
get-website.js
var system = require('system');
var webPage = require('webpage');
var fs = require('fs');
var page = webPage.create();
var url = system.args[1];
var file = system.args[2];
var requestsArray = [];
page.onResourceRequested = function (requestData, networkRequest) {
requestsArray.push(requestData.id);
};
page.onResourceReceived = function (response) {
var index = requestsArray.indexOf(response.id);
requestsArray.splice(index, 1);
};
page.open(url, function (status) {
var interval = setInterval(function () {
if (requestsArray.length === 0) {
clearInterval(interval);
try {
fs.write("/home/user/public_html/rss_contents/" + file + ".txt", page.content, 'w');
} catch (e) {
console.log(e);
}
phantom.exit();
}
}, 500);
});
Скрипт работает нормально при запуске из браузера, и задание cron также нормально работает при запуске спростой echo("done");
php-скрипт, но когда я пытаюсь запустить задание cron со скриптом fetch.php
, в файл выводится последняя строка, но ничего не происходит.
Я использую виртуальный хостинг.
РЕДАКТИРОВАТЬ: при попытке запустить phantomjs
непосредственно из консоли ssh, я получаю эту ошибку
2019-06-27T11: 34: 12 [ПРЕДУПРЕЖДЕНИЕ] QThread :: start: Threadошибка создания: ресурс временно недоступен
и консоль просто зависает без ответа.Я не смог найти ни одного сообщения об этом предупреждении в Google.