我正在尝试编写一个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上找不到任何谈论此警告的帖子。