具有exec()函数的PHP Cron Job

时间:2019-06-27 13:02:27

标签: php cron phantomjs

我正在尝试编写一个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);
});

从浏览器运行时,该脚本正常工作,而当使用简单的echo("done"); php脚本运行时,cron作业也正常工作,但是当我尝试使用fetch.php脚本运行cron作业时,最后一行回显到文件,但是什么也没发生。

我正在使用共享主机。

编辑: 尝试直接从ssh控制台运行phantomjs时,出现此错误

  

2019-06-27T11:34:12 [警告] QThread :: start:线程创建错误:   资源暂时不可用

并且控制台只是挂起而没有任何响应。 我在Google上找不到任何谈论此警告的帖子。

0 个答案:

没有答案