使用cronjob评估PHP并将管道输出到PNG文件

时间:2019-03-14 19:35:20

标签: javascript php html cron google-visualization

我有一个PHP文件,可渲染PNG图像(see online,基于Google Charts example)。我想使用cronjob“执行”此文件,并每天使用它在我的服务器上生成PNG图像。

这可能吗?我可以使用cronjob运行PHP / Bash。我尝试运行PHP脚本,该脚本使用PHP的eval()执行HTML,但是如何将输出通过管道传输到PNG文件?

google.charts.load("current", {
  packages: ['corechart']
});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {

  var data = google.visualization.arrayToDataTable([
    ['Element', 'Density', {
      role: 'style'
    }],
    ['Copper', 8.94, '#b87333', ],
    ['Silver', 10.49, 'silver'],
    ['Gold', 19.30, 'gold'],
    ['Platinum', 21.45, 'color: #e5e4e2']
  ]);

  var options = {
    title: "Density of Precious Metals, in g/cm^3",
    bar: {
      groupWidth: '95%'
    },
    legend: 'none',
  };

  var chart_div = document.getElementById('chart_div');
  var chart = new google.visualization.ColumnChart(chart_div);

  // Wait for the chart to finish drawing before calling the getImageURI() method.
  google.visualization.events.addListener(chart, 'ready', function() {
    chart_div.innerHTML = '<img src="' + chart.getImageURI() + '">';
    console.log(chart_div.innerHTML);
  });

  chart.draw(data, options);

}
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<div id='chart_div'></div>

1 个答案:

答案 0 :(得分:0)

我宁愿使用其他PHP库来执行此操作。

这很奇怪,但是...您可以使用

firefox -headless http://localhost/script.html

并通过ajax将chart.getImageURI()传递给PHP脚本,对其进行解码并保存。然后运行shell_exec杀死所有的Firefox进程(我想你将需要使用sudo)。