PHP Cron Job с функцией exec () - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь запрограммировать 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...