Как решить проблему с графиком, который заполнен данными Cli? - PullRequest
0 голосов
/ 01 марта 2020

Я получаю данные из вывода CLI, это число процессоров. Когда я использую это как переменную, диаграмма не показывает данные. Когда я устанавливаю переменную = 3 ;, это работает. В чем проблема?

Задача функции данных - около $ cpuCount. Когда я устанавливаю его вручную на число, это работает.

public function getStats()
    {   
    $machine = $this->vmName;
    $cmdCpuStat = "echo $this->sudoPasswd | sudo -S virsh domstats $machine --cpu-total | grep 'cpu.time' | cut -f2- -d=";
    $cmdCpuCount = "echo $this->sudoPasswd | sudo -S virsh cpu-stats $machine | grep 'CPU*' | sed -e 's/://' | wc -l";

    $provedPrikaz = $this->volani("$cmdCpuStat");
    $fstStat = stream_get_contents($provedPrikaz);
    sleep(1);
    $provedPrikaz = $this->volani("$cmdCpuStat");
    $scdStat = stream_get_contents($provedPrikaz);

    $provedPrikaz = $this->volani("$cmdCpuCount");
    $cpuCount = (int)stream_get_contents($provedPrikaz);
    //$cpuCount = 3;
    $usage = round(($scdStat - $fstStat)/10000000/$cpuCount, 2);
    echo $usage;

    }

Вызов функции -calls cli команда

public function volani($vstup)
    { 
    $connection = ssh2_connect($this->ipServeru, $this->portServeru);
    ssh2_auth_password($connection, $this->userName,$this->userPasswd);
    $vystup = ssh2_exec($connection, $vstup);
    stream_set_blocking($vystup, true);
    return $vystup;
    }

Код диаграммы -Такой скрипт показывает диаграмму

<script>
$(document).ready(function () {

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

    var prvni = 0;
    var druha = 0;
    var min;
    var max;
    function drawBasic() {
        var data = new google.visualization.DataTable();
        data.addColumn('number', 'X');
        data.addColumn('number', 'Y');
        var options;
        var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
        //chart.draw(data, options);

        function refreshData() {
            if ((prvni/5) <=30){min = 0;} else {min = prvni/5-30;}
            if ((prvni/5) <=30){max = 30;} else {max = prvni/5;}
            options = {
                legend: 'none',
                vAxis: {
                    title: 'Vytíženost (%)',
                    viewWindow: {
                        min: 0,
                        max: 120
                    }
                },
                hAxis: {
                    viewWindow: {
                        min: min,
                        max: max
                    }
                }
            }
            data.addRows([ [prvni/5, druha] ]);
            chart.draw(data, options);
            prvni = prvni + 5;

        }

        function load_data(query) {

            $.ajax({
                url: "<?php echo base_url(); ?>server/getStats",
                method: "POST",
                data: {query: query},
                success: function (select) {
                    druha = Number(select);
                    refreshData();
                },
                error: function () {
                    alert("BAD");
                }
            })
        }

        setInterval(function () {
            load_data();
            //refreshData();
            console.log(window);
        }, 2000);
    }
});

Извините за англи sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...