phantomjs performance
This commit is contained in:
parent
1134113cf3
commit
148384f8fb
|
@ -272,6 +272,12 @@ if ($install_package) {
|
||||||
"Update version: $version of ".$product_name.' by '.$config['id_user']
|
"Update version: $version of ".$product_name.' by '.$config['id_user']
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// An update have been applied, clean phantomjs cache.
|
||||||
|
config_update_value(
|
||||||
|
'clean_phantomjs_cache',
|
||||||
|
1
|
||||||
|
);
|
||||||
|
|
||||||
$return['status'] = 'success';
|
$return['status'] = 'success';
|
||||||
echo json_encode($return);
|
echo json_encode($return);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -41,6 +41,17 @@ require_once $config['homedir'].'/include/functions_modules.php';
|
||||||
require_once $config['homedir'].'/include/functions_agents.php';
|
require_once $config['homedir'].'/include/functions_agents.php';
|
||||||
require_once $config['homedir'].'/include/functions_tags.php';
|
require_once $config['homedir'].'/include/functions_tags.php';
|
||||||
|
|
||||||
|
$data_raw = get_parameter('data');
|
||||||
|
$data_decoded = json_decode(base64_decode($data_raw), true);
|
||||||
|
if (json_last_error() === JSON_ERROR_NONE) {
|
||||||
|
$data = urldecode($data_decoded['data']);
|
||||||
|
$session_id = urldecode($data_decoded['session_id']);
|
||||||
|
$data_combined = urldecode($data_decoded['data_combined']);
|
||||||
|
$data_module_list = urldecode($data_decoded['data_module_list']);
|
||||||
|
$type_graph_pdf = urldecode($data_decoded['type_graph_pdf']);
|
||||||
|
$viewport_width = urldecode($data_decoded['viewport_width']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Echo to stdout a PhantomJS callback call.
|
* Echo to stdout a PhantomJS callback call.
|
||||||
|
@ -69,7 +80,7 @@ function echoPhantomCallback()
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
// Try to initialize session using existing php session id.
|
// Try to initialize session using existing php session id.
|
||||||
$user = new PandoraFMS\User(['phpsessionid' => $_REQUEST['session_id']]);
|
$user = new PandoraFMS\User(['phpsessionid' => $session_id]);
|
||||||
if (check_login(false) === false) {
|
if (check_login(false) === false) {
|
||||||
// Error handler.
|
// Error handler.
|
||||||
?>
|
?>
|
||||||
|
@ -97,12 +108,12 @@ if (check_login(false) === false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Access granted.
|
// Access granted.
|
||||||
$params = json_decode($_REQUEST['data'], true);
|
$params = json_decode($data, true);
|
||||||
|
|
||||||
// Metaconsole connection to the node.
|
// Metaconsole connection to the node.
|
||||||
$server_id = $params['server_id'];
|
$server_id = $params['server_id'];
|
||||||
|
|
||||||
if (is_metaconsole() && !empty($server_id)) {
|
if (is_metaconsole() === true && empty($server_id) === false) {
|
||||||
$server = metaconsole_get_connection_by_id($server_id);
|
$server = metaconsole_get_connection_by_id($server_id);
|
||||||
// Error connecting.
|
// Error connecting.
|
||||||
if (metaconsole_connect($server) !== NOERR) {
|
if (metaconsole_connect($server) !== NOERR) {
|
||||||
|
@ -165,12 +176,12 @@ if (file_exists('languages/'.$user_language.'.mo') === true) {
|
||||||
$params['only_image'] = false;
|
$params['only_image'] = false;
|
||||||
$params['menu'] = false;
|
$params['menu'] = false;
|
||||||
|
|
||||||
$params_combined = json_decode($_REQUEST['data_combined'], true);
|
$params_combined = json_decode($data_combined, true);
|
||||||
$module_list = json_decode($_REQUEST['data_module_list'], true);
|
$module_list = json_decode($data_module_list, true);
|
||||||
$type_graph_pdf = $_REQUEST['type_graph_pdf'];
|
$type_graph_pdf = $type_graph_pdf;
|
||||||
|
|
||||||
if (isset($params['vconsole']) === false || $params['vconsole'] === false) {
|
if (isset($params['vconsole']) === false || $params['vconsole'] === false) {
|
||||||
$params['width'] = (int) $_REQUEST['viewport_width'];
|
$params['width'] = (int) $viewport_width;
|
||||||
if ((isset($params['width']) === false
|
if ((isset($params['width']) === false
|
||||||
|| ($params['width'] <= 0))
|
|| ($params['width'] <= 0))
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -107,13 +107,13 @@ class ConsoleSupervisor
|
||||||
$this->verbose = $verbose;
|
$this->verbose = $verbose;
|
||||||
|
|
||||||
if ($source === false) {
|
if ($source === false) {
|
||||||
$this->enabled = false;
|
$this->notificationsEnabled = false;
|
||||||
$this->sourceId = null;
|
$this->sourceId = null;
|
||||||
|
|
||||||
$this->targetGroups = null;
|
$this->targetGroups = null;
|
||||||
$this->targetUsers = null;
|
$this->targetUsers = null;
|
||||||
} else {
|
} else {
|
||||||
$this->enabled = (bool) $source['enabled'];
|
$this->notificationsEnabled = (bool) $source['enabled'];
|
||||||
$this->sourceId = $source['id'];
|
$this->sourceId = $source['id'];
|
||||||
|
|
||||||
// Assign targets.
|
// Assign targets.
|
||||||
|
@ -251,8 +251,10 @@ class ConsoleSupervisor
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
if ($this->enabled === false) {
|
$this->maintenanceOperations();
|
||||||
// Feature not enabled.
|
|
||||||
|
if ($this->notificationsEnabled === false) {
|
||||||
|
// Notifications not enabled.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -490,6 +492,21 @@ class ConsoleSupervisor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes console maintenance operations. Executed ALWAYS through CRON.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function maintenanceOperations()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Process cache clean if needed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
$this->checkCleanPhantomCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update targets for given notification using object targets.
|
* Update targets for given notification using object targets.
|
||||||
*
|
*
|
||||||
|
@ -2597,4 +2614,30 @@ class ConsoleSupervisor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clean Phantom cache if needed.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function checkCleanPhantomCache()
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
if ((int) $config['clean_phantomjs_cache'] !== 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$cache_dir = $config['homedir'].'/attachment/cache';
|
||||||
|
if (is_dir($cache_dir) === true) {
|
||||||
|
rrmdir($cache_dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean process has ended.
|
||||||
|
config_update_value(
|
||||||
|
'clean_phantomjs_cache',
|
||||||
|
0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3973,8 +3973,22 @@ function series_type_graph_array($data, $show_elements_graph)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function generator_chart_to_pdf($type_graph_pdf, $params, $params_combined=false, $module_list=false)
|
/**
|
||||||
{
|
* Draw chart pdf.
|
||||||
|
*
|
||||||
|
* @param string $type_graph_pdf Type graph.
|
||||||
|
* @param array $params Params.
|
||||||
|
* @param boolean $params_combined Params only charts combined.
|
||||||
|
* @param boolean $module_list Array modules.
|
||||||
|
*
|
||||||
|
* @return string Img or base64.
|
||||||
|
*/
|
||||||
|
function generator_chart_to_pdf(
|
||||||
|
$type_graph_pdf,
|
||||||
|
$params,
|
||||||
|
$params_combined=false,
|
||||||
|
$module_list=false
|
||||||
|
) {
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
if (is_metaconsole()) {
|
if (is_metaconsole()) {
|
||||||
|
@ -4016,8 +4030,18 @@ function generator_chart_to_pdf($type_graph_pdf, $params, $params_combined=false
|
||||||
}
|
}
|
||||||
|
|
||||||
$session_id = session_id();
|
$session_id = session_id();
|
||||||
|
$cache_dir = $config['homedir'].'/attachment/cache';
|
||||||
|
|
||||||
$cmd = '"'.io_safe_output($config['phantomjs_bin']).DIRECTORY_SEPARATOR.'phantomjs" --ssl-protocol=any --ignore-ssl-errors=true "'.$file_js.'" '.' "'.$url.'"'.' "'.$type_graph_pdf.'"'.' "'.$params_encode_json.'"'.' "'.$params_combined.'"'.' "'.$module_list.'"'.' "'.$img_path.'"'.' "'.$width_img.'"'.' "'.$height_img.'"'.' "'.$session_id.'"'.' "'.$params['return_img_base_64'].'"';
|
$cmd = '"'.io_safe_output($config['phantomjs_bin']);
|
||||||
|
$cmd .= DIRECTORY_SEPARATOR.'phantomjs" ';
|
||||||
|
$cmd .= ' --disk-cache=true --disk-cache-path="'.$cache_dir.'"';
|
||||||
|
$cmd .= ' --max-disk-cache-size=10000 ';
|
||||||
|
$cmd .= ' --ssl-protocol=any --ignore-ssl-errors=true ';
|
||||||
|
$cmd .= '"'.$file_js.'" "'.$url.'" "'.$type_graph_pdf.'"';
|
||||||
|
$cmd .= ' "'.$params_encode_json.'" "'.$params_combined.'"';
|
||||||
|
$cmd .= ' "'.$module_list.'" "'.$img_path.'"';
|
||||||
|
$cmd .= ' "'.$width_img.'" "'.$height_img.'"';
|
||||||
|
$cmd .= ' "'.$session_id.'" "'.$params['return_img_base_64'].'"';
|
||||||
|
|
||||||
$result = null;
|
$result = null;
|
||||||
$retcode = null;
|
$retcode = null;
|
||||||
|
@ -4029,7 +4053,7 @@ function generator_chart_to_pdf($type_graph_pdf, $params, $params_combined=false
|
||||||
// To be used in alerts.
|
// To be used in alerts.
|
||||||
return $img_content;
|
return $img_content;
|
||||||
} else {
|
} else {
|
||||||
// to be used in PDF files.
|
// To be used in PDF files.
|
||||||
$config['temp_images'][] = $img_path;
|
$config['temp_images'][] = $img_path;
|
||||||
return '<img src="'.$img_url.'" />';
|
return '<img src="'.$img_url.'" />';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1349,7 +1349,7 @@ function graphic_combined_module(
|
||||||
if ($count_modules > 0) {
|
if ($count_modules > 0) {
|
||||||
foreach ($module_list as $key => $value) {
|
foreach ($module_list as $key => $value) {
|
||||||
$sources[$key]['id_server'] = (isset($value['id_server']) === true) ? $value['id_server'] : $params['server_id'];
|
$sources[$key]['id_server'] = (isset($value['id_server']) === true) ? $value['id_server'] : $params['server_id'];
|
||||||
$sources[$key]['id_agent_module'] = $value['module'];
|
$sources[$key]['id_agent_module'] = (isset($value['module']) === true) ? $value['module'] : $value;
|
||||||
$sources[$key]['weight'] = $weights[$key];
|
$sources[$key]['weight'] = $weights[$key];
|
||||||
$sources[$key]['label'] = $params_combined['labels'];
|
$sources[$key]['label'] = $params_combined['labels'];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1753,6 +1753,12 @@ function update_manager_extract_package()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// An update have been applied, clean phantomjs cache.
|
||||||
|
config_update_value(
|
||||||
|
'clean_phantomjs_cache',
|
||||||
|
1
|
||||||
|
);
|
||||||
|
|
||||||
db_process_sql_update(
|
db_process_sql_update(
|
||||||
'tconfig',
|
'tconfig',
|
||||||
['value' => 50],
|
['value' => 50],
|
||||||
|
|
|
@ -27,27 +27,79 @@ if (!viewport_height) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type_graph_pdf == "combined") {
|
if (type_graph_pdf == "combined") {
|
||||||
post_data =
|
post_data = {
|
||||||
"data=" +
|
data: url_params,
|
||||||
url_params +
|
session_id: session_id,
|
||||||
"&data_combined=" +
|
type_graph_pdf: type_graph_pdf,
|
||||||
url_params_comb +
|
data_module_list: url_module_list,
|
||||||
"&data_module_list=" +
|
data_combined: url_params_comb
|
||||||
url_module_list +
|
};
|
||||||
"&type_graph_pdf=" +
|
|
||||||
type_graph_pdf +
|
|
||||||
"&session_id=" +
|
|
||||||
session_id;
|
|
||||||
} else {
|
} else {
|
||||||
post_data =
|
post_data = {
|
||||||
"data=" +
|
data: url_params,
|
||||||
url_params +
|
session_id: session_id,
|
||||||
"&type_graph_pdf=" +
|
type_graph_pdf: type_graph_pdf
|
||||||
type_graph_pdf +
|
};
|
||||||
"&session_id=" +
|
|
||||||
session_id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* DEBUG
|
||||||
|
page.onAlert = function() {
|
||||||
|
console.log("onAlert");
|
||||||
|
};
|
||||||
|
page.onCallback = function() {
|
||||||
|
console.log("onCallback");
|
||||||
|
};
|
||||||
|
page.onClosing = function() {
|
||||||
|
console.log("onClosing");
|
||||||
|
};
|
||||||
|
page.onConfirm = function() {
|
||||||
|
console.log("onConfirm");
|
||||||
|
};
|
||||||
|
page.onConsoleMessage = function() {
|
||||||
|
console.log("onConsoleMessage");
|
||||||
|
};
|
||||||
|
page.onError = function() {
|
||||||
|
console.log("onError");
|
||||||
|
};
|
||||||
|
page.onFilePicker = function() {
|
||||||
|
console.log("onFilePicker");
|
||||||
|
};
|
||||||
|
page.onInitialized = function() {
|
||||||
|
console.log("onInitialized");
|
||||||
|
};
|
||||||
|
page.onLoadFinished = function() {
|
||||||
|
console.log("onLoadFinished");
|
||||||
|
};
|
||||||
|
page.onLoadStarted = function() {
|
||||||
|
console.log("onLoadStarted");
|
||||||
|
};
|
||||||
|
page.onNavigationRequested = function() {
|
||||||
|
console.log("onNavigationRequested");
|
||||||
|
};
|
||||||
|
page.onPageCreated = function() {
|
||||||
|
console.log("onPageCreated");
|
||||||
|
};
|
||||||
|
page.onPrompt = function() {
|
||||||
|
console.log("onPrompt");
|
||||||
|
};
|
||||||
|
page.onResourceError = function() {
|
||||||
|
console.log("onResourceError");
|
||||||
|
};
|
||||||
|
page.onResourceReceived = function(res) {
|
||||||
|
console.log("onResourceReceived" + ";" + res.url + ";" + res.status);
|
||||||
|
};
|
||||||
|
page.onResourceRequested = function(res) {
|
||||||
|
console.log("onResourceRequested" + ";" + res.url);
|
||||||
|
};
|
||||||
|
page.onResourceTimeout = function() {
|
||||||
|
console.log("onResourceTimeout");
|
||||||
|
};
|
||||||
|
page.onUrlChanged = function(url) {
|
||||||
|
console.log("onUrlChanged" + ";" + url);
|
||||||
|
};
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
var page = require("webpage").create();
|
var page = require("webpage").create();
|
||||||
|
|
||||||
page.onResourceError = function(resourceError) {
|
page.onResourceError = function(resourceError) {
|
||||||
|
@ -80,8 +132,15 @@ page.viewportSize = {
|
||||||
|
|
||||||
page.zoomFactor = 1;
|
page.zoomFactor = 1;
|
||||||
|
|
||||||
|
page.settings.userAgent =
|
||||||
|
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36";
|
||||||
|
page.settings.resourceTimeout = 2000;
|
||||||
|
page.settings.localToRemoteUrlAccessEnabled = true;
|
||||||
|
|
||||||
page.onConsoleMessage = function(msg) {
|
page.onConsoleMessage = function(msg) {
|
||||||
console.log(msg);
|
console.log(msg);
|
||||||
|
page.close();
|
||||||
|
phantom.exit();
|
||||||
};
|
};
|
||||||
|
|
||||||
page.onError = function(msg) {
|
page.onError = function(msg) {
|
||||||
|
@ -102,7 +161,9 @@ page.onCallback = function() {
|
||||||
phantom.exit();
|
phantom.exit();
|
||||||
};
|
};
|
||||||
|
|
||||||
page.open(url, "POST", post_data, function(status) {
|
page.open(url, "POST", "data=" + btoa(JSON.stringify(post_data)), function(
|
||||||
|
status
|
||||||
|
) {
|
||||||
if (status == "fail") {
|
if (status == "fail") {
|
||||||
console.out("Failed to generate chart.");
|
console.out("Failed to generate chart.");
|
||||||
phantom.exit();
|
phantom.exit();
|
||||||
|
|
Loading…
Reference in New Issue