使用php导出Serverside上的Highcharts?
我有以下设置:使用php导出Serverside上的Highcharts?
第一个PHP文件:从MySQL数据库获取数据,将其放入highchart,出口额为“export.highcharts.com”为PNG和帖子的图片的URL到PHP文件2号通过阿贾克斯职位。
第二PHP文件:从PHP文件编号为1的Ajax Post获取“imagelink”,然后连接到twitter api以发布包含该图片的推文。
现在,只要我在浏览器中执行第一个PHP文件,这一切都很好。
我需要通过cronjob在“服务器端”运行这个自动化。现在它不再工作了,因为它包含ajax和ajax文章,它不会在服务器端执行。
首先PHP文件的代码:
<!-- Bootstrap core JavaScript -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<!-- Highcharts -->
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-3d.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<?php
$server = "localhost";
$username = "test";
$password = "test";
$db = "test";
$connect = @mysql_connect($server, $username, $password);
?>
<?php if ($connect && mysql_select_db($db, $connect)) : ?> <?php
// Select twitterdata table
$printMarketdata = mysql_query("SELECT * FROM marketdata ORDER BY volume24h DESC LIMIT 10") or die("MySQL Error! ".mysql_error());
// Marketdata found
if (mysql_num_rows($printMarketdata) > 0) {
?>
<script>
// Create the chart
var options = {
chart: {
type: 'bar'
},
title: {
text: 'TOP 10 Highest Trading Volume (24h)'
},
subtitle: {
text: 'Trading Volume (24h)'
},
xAxis: {
type: 'category'
},
yAxis: {
title: {
text: 'Volume'
}
},
legend: {
enabled: false
},
plotOptions: {
series: {
cursor: 'pointer',
borderWidth: 0,
dataLabels: {
enabled: true,
format: '${point.y:,.0f}'
},
point: {
events: {
click: function() {
location.href = 'https://example.com/' +
this.options.key;
}
}
}
}
},
tooltip: {
headerFormat: '<span style="font-size:11px">{series.name}</span><br>',
pointFormat: '<span style="color:{point.color}">{point.name}</span>: <b>${point.y:,.0f}</b><br/>'
},
series: [{
name: 'Trading Volume (24h)',
colorByPoint: true,
data: [
<?php // output data of each row
while ($marketdata = mysql_fetch_array($printMarketdata))
{
?>
{
name: '<?php echo $marketdata['name'];?>',
y: <?php echo $marketdata['volume24h'];?>,
key: '<?php echo $marketdata['symbol'];?>'
},
<?php
}
?>
]
}],
navigation: {
buttonOptions: {
enabled: false
}
},
credits: {
enabled: false
}
};
// URL to Highcharts export server
var exportUrl = 'https://export.highcharts.com/';
// POST parameter for Highcharts export server
var object = {
options: JSON.stringify(options),
type: 'image/png',
async: true
};
// Ajax request
$.ajax({
type: 'post',
url: exportUrl,
data: object,
success: function (data) {
//Submit data from your server
// Ajax request
$.ajax({
type: 'post',
url: 'posttweet.php',//this your local file
data: {'url' : exportUrl+data},
success: function (data2) {
//Response from your server
//if your teste.php print response. echo "" or die("") ;
alert(data2);
}
});
}
});
</script>
<?php
// No Data found
} else {
echo "0 results";
}
?>
<?php else : ?>
<h2>Database connection failed!</h2>
<?php endif; ?>
难道你们有什么好的代码,我可以使用(最好是PHP),这样我就可以让highchart和出口作为服务器端的图像?
您无法从PHP运行AJAX,因此您需要用一些PHP替换您的JavaScript代码。
您可以使用卷曲,或喜欢狂饮卷曲库将请求发送到其他页面,API等
看一看PHP的文档的信息上卷曲: http://php.net/manual/en/curl.examples-basic.php
大约说,像这样的:
第一个PHP文件:从MySQL数据库获取数据,将其放入highchart,出口额为“export.highcharts.com”为PNG 并要求文件2并将结果
第二个PHP文件:从其他PHP文件获取“imagelink”,然后连接到twitter api,将包含图像的推文发送到图表。
谢谢。嗯,所以我需要让整个高调卷曲?还是只有导出部分? – user8607695
我真的不明白你的意思...是否有任何例子如何使用curl导出图表作为图像?谢谢! :) – user8607695
您可以使用选项生成图表,向高图导出服务器发送请求。它将返回具有指定格式的图像。你可以在页面底部的API描述 - https://www.highcharts.com/docs/export-module/export-module-overview – morganfree
要使用高图服务器端,您将需要在您的服务器上一个完整的浏览器... PHP不会这样做,它只会用来调用命令行和东西... – Salketer
是的,那么该怎么办这是最好的方式? – user8607695