为什么分配给数组的PHP代码挂起?

为什么分配给数组的PHP代码挂起?,php,mysql,Php,Mysql,我对PHP完全陌生。我准备了(基于各种互联网来源)一个从mysql数据库获取数据的页面,并使用flot将其显示为图形。对于加载的单个数据库表,它非常有效。不过,我将代码转换为“多任务”加载,因为我希望每个网页都有多个图形 所述代码如下: <?php // this retrieves the data from a single page $servername = "dbserver"; $username = "dbuser"; $password = "dbpassword"; $d

我对PHP完全陌生。我准备了(基于各种互联网来源)一个从mysql数据库获取数据的页面,并使用flot将其显示为图形。对于加载的单个数据库表,它非常有效。不过,我将代码转换为“多任务”加载,因为我希望每个网页都有多个图形

所述代码如下:

<?php
// this retrieves the data from a single page
$servername = "dbserver";
$username = "dbuser";
$password = "dbpassword";
$dbname = "mydatabase";
$port = 5511;

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname, $port);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// time in microseconds
$timenow = time()*1e6;
// start time 8 hours ago
$timestart = intval($timenow - (8*60*60*1e6));

$tables = array("cfoua47bccmb1a_stat", "cfoua47bccmb2a_stat", "cfoua47bccmb1b_stat", "cfoua47bccmb2b_stat");

$sql = "";
foreach ($tables as $table) {
// add each select command to a single query
$sql .= "SELECT time, energy,ABS1TMIN,ABS1TMAX,ABS1TAVG,ABS4TMIN,ABS4TMAX,ABS4TAVG,ABS16TMIN,ABS16TMAX,ABS16TAVG,ABS64TMIN,ABS64TMAX,ABS64TAVG,ABS256TMIN,ABS256TMAX,ABS256TAVG,ABS1024TMIN,ABS1024TMAX,ABS1024TAVG,DIFF1TMIN,DIFF1TMAX,DIFF1TAVG,DIFF4TMIN,DIFF4TMAX,DIFF4TAVG,DIFF16TMIN,DIFF16TMAX,DIFF16TAVG,DIFF64TMIN,DIFF64TMAX,DIFF64TAVG,DIFF256TMIN,DIFF256TMAX,DIFF256TAVG,DIFF1024TMIN,DIFF1024TMAX,DIFF1024TAVG,THR1,THR4,THR16,THR64,THR256,THR1024 FROM " . $table . " WHERE time >=" . $timestart . ";";
}

$alldevices = array();
$index = 0;

if ($conn->multi_query($sql)) {
    do {
        /* store first result set */
        if ($result = $conn->store_result()) {
            // generate for each device a separate dictionary
            echo $tables[$index];
            $alldevices[$tables[$index]] = array();
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
                // assign the value to the dictionary
                $alldevices[$tables[$index]][] = $row;
                //var_dump ($alldevices);

            }
            $result->free();
        }
        /* print divider */
        if ($conn->more_results()) {
            $index = $index + 1;
            printf("-----------------\n");
        }
    } while ($conn->next_result());
}

var_dump ($alldevices);


// THIS CODE NICELY WORKS FOR A SINGLE GRAPH AND WAS REPLACED
// BY THE CODE ABOVE TO FETCH AND PREPARE JSON DATA FOR ALL THE
// TABLES

// $result = $conn->query($sql);
// // json convert
// $rows = array();
// if ($result->num_rows > 0) {
//     // output data of each row
//     while($row = $result->fetch_assoc()) {
//         // one by one copy into rows
//         $rows[] = $row;
//     }
// }
$conn->close();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Beam Current Change Monitors</title>
    <link href="./examples.css" rel="stylesheet" type="text/css">
    <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
    <script language="javascript" type="text/javascript" src="./jquery.js"></script>
    <script language="javascript" type="text/javascript" src="./flot/jquery.flot.js"></script>
    <script language="javascript" type="text/javascript" src="./flot/jquery.flot.time.js"></script>
    <script language="javascript" type="text/javascript" src="./flot/jquery.flot.navigate.js"></script>
    <script language="javascript" type="text/javascript" src="./flot-axislabels/jquery.flot.axislabels.js"></script>
    <script type="text/javascript">

    $(function() {
var graphdata = <?php echo json_encode( $rows ) ?>;
var a1t = [];
var a4t = [];
var a16t = [];
var a64t = [];
var a256t = [];
var a1024t = [];
var d1t = [], d4t = [], d16t = [], d64t = [], d256t = [], d1024t = [], energy = [];

// for localtime conversion
var nd = new Date();
var nt = nd.getTimezoneOffset();
for (var m in graphdata){
            energy.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['energy']] );
            a1t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['ABS1TMAX']] );
            a4t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['ABS4TMAX'] / 4] );
            a16t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['ABS16TMAX']/16 ]  );
            a64t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['ABS64TMAX']/64 ]  );
            a256t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['ABS256TMAX']/256 ]  );
            a1024t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['ABS1024TMAX']/1024 ]  );
            d1t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['DIFF1TMAX']] );
            d4t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['DIFF4TMAX']/4 ]  );
            d16t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['DIFF16TMAX']/16 ]  );
            d64t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['DIFF64TMAX']/64 ]  );
            d256t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['DIFF256TMAX']/256 ]  );
            d1024t.push ( [graphdata[m]['time'] / 1e3 - nt*60*1000,graphdata[m]['DIFF1024TMAX']/1024 ]  );
        }

// two plots to produce
$.plot("#abs", [
    {data:energy, label:"Energy", yaxis:2},
    {data:a1t, label: "1T"},
    {data:a4t, label: "4T"},
    {data:a16t, label: "16T"},
    {data:a64t, label: "64T"},
    {data:a256t, label: "256T"},
    {data:a1024t, label: "1024T"}
], {
           xaxes: [ { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true} ],
 yaxes: [ {min:0, axisLabel: "ADC bins [-]", axisLabelUseCanvas: true}, {min:0, max:7000, position: "right"} ],
 legend: {position: "nw"}
 });

$.plot("#diff", [
    {data:d1t, label: "1T"},
    {data:d4t, label: "4T"},
    {data:d16t, label: "16T"},
    {data:d64t, label: "64T"},
    {data:d256t, label: "256T"},
    {data:d1024t, label: "1024T"}
], {
           xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true},
 yaxis: {axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true, min:0, max: 1e5},
 legend: {position: "nw"}
       });

    });

    </script>
</head>
<body>
    <div id="header">
        <h3>CFO-UA47-BCCM-B1A</h3>
    </div>

    <div id="content">

        <div class="demo-container">
            <div id="abs" class="demo-placeholder"></div>
        </div>
        <div class="demo-container">
            <div id="diff" class="demo-placeholder"></div>
        </div>

</body>
</html>
PHP引擎因未知原因挂起。也就是说,它不会加载表中的所有值,只是停止工作。当从代码中删除这一行时,代码被正常处理(因此执行所有4个SQL查询,整个页面当前仅显示两个空图)。但是,如果我将该代码留在那里,并在fetch_row()的每次迭代中打印$row[0],我可以看到它完全加载第一个表,但仅部分加载第二个表,然后挂起


我做错了什么?

为了完整性,我给出了问题的解决方案。所以这一切的主要原因是可用的内存。因此,根据developerwk的建议,我将引擎重新实现为两个独立的步骤:

1) PHP脚本位于一个单独的文件中,从MySQL数据库获取所需数据:

<?php

function loadData($tablename) {
    // this retrieves the data from a single page
    $servername = "myserver";
    $username = "myusername";
    $password = "somefancypassword";
    $dbname = "databasename";
    $port = 5511;

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname, $port);

    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    // time in microseconds
    $timenow = time()*1e6;
    // start time 8 hours ago
    $timestart = intval($timenow - (8*60*60*1e6));
    // define array of variables to select
    $variables = array("time", "energy","ABS1TMIN","ABS1TMAX","ABS1TAVG","ABS4TMIN","ABS4TMAX","ABS4TAVG","ABS16TMIN","ABS16TMAX","ABS16TAVG","ABS64TMIN","ABS64TMAX","ABS64TAVG","ABS256TMIN","ABS256TMAX","ABS256TAVG","ABS1024TMIN","ABS1024TMAX","ABS1024TAVG","DIFF1TMIN","DIFF1TMAX","DIFF1TAVG","DIFF4TMIN","DIFF4TMAX","DIFF4TAVG","DIFF16TMIN","DIFF16TMAX","DIFF16TAVG","DIFF64TMIN","DIFF64TMAX","DIFF64TAVG","DIFF256TMIN","DIFF256TMAX","DIFF256TAVG","DIFF1024TMIN","DIFF1024TMAX","DIFF1024TAVG","THR1","THR4","THR16","THR64","THR256","THR1024");
    // loopvars - to iterate when generating arrays
    $loopvars = array_slice($variables,1);

    // sql to fetch the data for a single system
    $sql = "SELECT " . join(',', $variables) . " FROM " . $tablename . " WHERE time >=" . $timestart . ";";

    // generate dictionary of arrays
    foreach ($loopvars as $var) {
        echo "myarray['".$var."']=[];";
    }

    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            // one by one copy into rows
            foreach ($loopvars as $var) {
                echo "myarray['".$var."'].push( [". $row['time']/1e3 . "," . $row[$var] . "] );" ;
            }
        }
    }
    $conn->close();
}

?>

如您所见,PHP脚本不生成任何变量,而是生成一个javascript代码,该代码填充javascript中的“myarray”变量

然后我设置了一个新的index.php页面,通过连续调用php脚本在myarray中生成数据,并使用flot绘制它们:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Beam Current Change Monitors</title>
        <link href="./examples.css" rel="stylesheet" type="text/css">
        <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
        <script language="javascript" type="text/javascript" src="./jquery.js"></script>
        <script language="javascript" type="text/javascript" src="./flot/jquery.flot.js"></script>
        <script language="javascript" type="text/javascript" src="./flot/jquery.flot.time.js"></script>
        <script language="javascript" type="text/javascript" src="./flot/jquery.flot.navigate.js"></script>
        <script language="javascript" type="text/javascript" src="./flot-axislabels/jquery.flot.axislabels.js"></script>

        <script type="text/javascript">
        $(document).ready(function() {
            // this is tables array to display accompanied with ymax restriction
            var tables = new Array (["cfoua47bccmb1a_stat", 1e8], ["cfoua47bccmb2a_stat", 1e8], ["cfoua47bccmb1b_stat", 1e8], ["cfoua47bccmb2b_stat", 1e8]);

            var myarray = new Array();
            // NOTE: unfortunately we now need to dumbly copy this block 4 times. This is because we are not able to change
            // the argument in PHP function loadData dynamically. This function is evaluated at the server side. The only
            // way we could use it dynamically is to call php script through ajax, however then there is an issue with passing
            // arguments back to javascript. Instead, call to loadData generates javascript code, which fills the myarray variable by
            // data loaded from the database.
            //console.log("my object: %o", myarray);
            <?php include 'fetchdata.php';loadData("cfoua47bccmb2a_stat");?>
            //console.log("my object: %o", myarray);
            $.plot("#abscfoua47bccmb2a_stat", [{data:myarray['ABS1TMAX'], label: "1T"}, {data:myarray['ABS4TMAX'], label: "4T"},{data:myarray['ABS16TMAX'], label: "16T"},{data:myarray['ABS64TMAX'], label: "64T"},{data:myarray['ABS256TMAX'], label: "256T"},{data:myarray['ABS1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true}} );
            $.plot("#diffcfoua47bccmb2a_stat", [{data:myarray['DIFF1TMAX'], label: "1T"}, {data:myarray['DIFF4TMAX'], label: "4T"},{data:myarray['DIFF16TMAX'], label: "16T"},{data:myarray['DIFF64TMAX'], label: "64T"},{data:myarray['DIFF256TMAX'], label: "256T"},{data:myarray['DIFF1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true, min:0, max: 1e8}} );

            // make it empty again and run for B2A
            myarray = [];
            <?php  loadData("cfoua47bccmb1a_stat");?>
            $.plot("#abscfoua47bccmb1a_stat", [{data:myarray['ABS1TMAX'], label: "1T"}, {data:myarray['ABS4TMAX'], label: "4T"},{data:myarray['ABS16TMAX'], label: "16T"},{data:myarray['ABS64TMAX'], label: "64T"},{data:myarray['ABS256TMAX'], label: "256T"},{data:myarray['ABS1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true}} );
            $.plot("#diffcfoua47bccmb1a_stat", [{data:myarray['DIFF1TMAX'], label: "1T"}, {data:myarray['DIFF4TMAX'], label: "4T"},{data:myarray['DIFF16TMAX'], label: "16T"},{data:myarray['DIFF64TMAX'], label: "64T"},{data:myarray['DIFF256TMAX'], label: "256T"},{data:myarray['DIFF1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true, min:0, max: 1e8}} );


            // make it empty again and run for B1B
            myarray = [];
            <?php loadData("cfoua47bccmb1b_stat");?>
            //console.log("my object: %o", myarray);
            $.plot("#abscfoua47bccmb1b_stat", [{data:myarray['ABS1TMAX'], label: "1T"}, {data:myarray['ABS4TMAX'], label: "4T"},{data:myarray['ABS16TMAX'], label: "16T"},{data:myarray['ABS64TMAX'], label: "64T"},{data:myarray['ABS256TMAX'], label: "256T"},{data:myarray['ABS1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true}} );
            $.plot("#diffcfoua47bccmb1b_stat", [{data:myarray['DIFF1TMAX'], label: "1T"}, {data:myarray['DIFF4TMAX'], label: "4T"},{data:myarray['DIFF16TMAX'], label: "16T"},{data:myarray['DIFF64TMAX'], label: "64T"},{data:myarray['DIFF256TMAX'], label: "256T"},{data:myarray['DIFF1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true, min:0, max: 1e8}} );

            // run B2B
            myarray = [];
            <?php loadData("cfoua47bccmb2b_stat");?>
            //console.log("my object: %o", myarray);
            $.plot("#abscfoua47bccmb2b_stat", [{data:myarray['ABS1TMAX'], label: "1T"}, {data:myarray['ABS4TMAX'], label: "4T"},{data:myarray['ABS16TMAX'], label: "16T"},{data:myarray['ABS64TMAX'], label: "64T"},{data:myarray['ABS256TMAX'], label: "256T"},{data:myarray['ABS1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true}} );
            $.plot("#diffcfoua47bccmb2b_stat", [{data:myarray['DIFF1TMAX'], label: "1T"}, {data:myarray['DIFF4TMAX'], label: "4T"},{data:myarray['DIFF16TMAX'], label: "16T"},{data:myarray['DIFF64TMAX'], label: "64T"},{data:myarray['DIFF256TMAX'], label: "256T"},{data:myarray['DIFF1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true, min:0, max: 1e8}} );
        });
        </script>

    </head>
    <body>
        <div id="header">
            <h1 align="center">BCCM status panel</h1>
        </div>
        <h2 align="center">operational systems</h2>
        <div class="demo-container" style="width:100%; display:table;">
            <div style="display: table-row">
                <div style="display:table-cell;"><h3 align="center">CFO-UA47-BCCM-B1A</h3></div>
                <div style="display:table-cell;"><h3 align="center">CFO-UA47-BCCM-B2A</h3></div>
            </div>
            <div style="display: table-row">
                <div id="abscfoua47bccmb1a_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
                <div id="abscfoua47bccmb2a_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
            </div>
        </div>
        <div class="demo-container" style="width:100%; display:table;">
            <div style="display: table-row">
                <div id="diffcfoua47bccmb1a_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
                <div id="diffcfoua47bccmb2a_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
            </div>
        </div>
        <h2 align="center">development systems</h2>
        <div class="demo-container" style="width:100%; display:table;">
            <div style="display: table-row">
                <div style="display:table-cell;"><h3 align="center">CFO-UA47-BCCM-B1B</h3></div>
                <div style="display:table-cell;"><h3 align="center">CFO-UA47-BCCM-B2B</h3></div>
            </div>
            <div style="display: table-row">
                <div id="abscfoua47bccmb1b_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
                <div id="abscfoua47bccmb2b_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
            </div>
        </div>
        <div class="demo-container" style="width:100%; display:table;">
            <div style="display: table-row">
                <div id="diffcfoua47bccmb1b_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
                <div id="diffcfoua47bccmb2b_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
            </div>
        </div>


        <div id="footer">
            Issues? mail to: <a href="mailto:david.belohrad@cern.ch?Subject=Issue%20with%20BCCM%20web%20page" target="_top">david.belohrad@cern.ch</a>
        </div>

    </body>
</html>

束流变化监测器
$(文档).ready(函数(){
//这是要随ymax限制一起显示的表数组
变量表=新数组([“cfoua47bccmb1a_stat”,1e8],“cfoua47bccmb2a_stat”,1e8],“cfoua47bccmb1b_stat”,1e8],“cfoua47bccmb2b_stat”,1e8]);
var myarray=新数组();
//注意:不幸的是,我们现在需要无声地复制这个块4次。这是因为我们无法更改
//PHP函数中的参数动态加载数据。此函数在服务器端计算。唯一
//我们可以动态地使用它的方式是通过ajax调用php脚本,然而,在传递过程中存在一个问题
//相反,调用loadData会生成javascript代码,该代码通过
//从数据库加载的数据。
//log(“我的对象:%o”,myarray);
//log(“我的对象:%o”,myarray);
$.plot(“#abscfoua47bccmb2a_stat“,[{data:myarray['ABS1TMAX'],label:“1T”},{data:myarray['ABS4TMAX'],label:“4T”},{data:myarray['ABS16TMAX'],label:“64T”},{data:myarray['ABS256TMAX'],label:“256T”},{data:myarray['ABS4TMAX'],label:“1024tmax”],label:“时间轴”{',axisLabelUseCanvas:true},yaxis:{axisLabel:'ADC bins[-]',axisLabelUseCanvas:true});
$.plot(“#diffcfoua47bccmb2a_stat“,[{data:myarray['DIFF1TMAX'],label:'1T},{data:myarray['DIFF4TMAX'],label:'4T},{data:myarray['DIFF16TMAX'],label:'64T},{data:myarray['DIFF256TMAX'],label:'256T},{data:myarray'DIFF16TMAX,label:'1024tmax,label:'时间轴['1024]“,axisLabelUseCanvas:true},yaxis:{axisLabel:'ADC bins[-]”,axisLabelUseCanvas:true,min:0,max:1e8});
//再次将其清空并运行B2A
myarray=[];
$.plot(“#abscfoua47bccmb1a_stat“,[{data:myarray['ABS1TMAX'],label:“1T”},{data:myarray['ABS4TMAX'],label:“4T”},{data:myarray['ABS16TMAX'],label:“64T”},{data:myarray['ABS256TMAX'],label:“256T”},{data:myarray['ABS4TMAX'],label:“1024tmax”],label:“时间轴”{',axisLabelUseCanvas:true},yaxis:{axisLabel:'ADC bins[-]',axisLabelUseCanvas:true});
$.plot(“#diffcfoua47bccmb1a_stat“,[{data:myarray['DIFF1TMAX'],label:'1T},{data:myarray['DIFF4TMAX'],label:'4T},{data:myarray['DIFF16TMAX'],label:'64T},{data:myarray['DIFF256TMAX'],label:'256T},{data:myarray'diff14tmax,label:'1024tmax,label:'time:'xis:'“,axisLabelUseCanvas:true},yaxis:{axisLabel:'ADC bins[-]”,axisLabelUseCanvas:true,min:0,max:1e8});
//再次清空并运行B1B
myarray=[];
//log(“我的对象:%o”,myarray);
$.plot(“#abscfoua47bccmb1b_stat“,[{data:myarray['ABS1TMAX'],label:“1T”},{data:myarray['ABS4TMAX'],label:“4T”},{data:myarray['ABS16TMAX'],label:“64T”},{data:myarray['ABS256TMAX'],label:“256T”},{data:myarray['ABS4TMAX'],label:“1024tmax”],label:“时间轴”{',axisLabelUseCanvas:true},yaxis:{axisLabel:'ADC bins[-]',axisLabelUseCanvas:true});
$.plot(“#diffcfoua47bccmb1b_stat“,[{data:myarray['DIFF1TMAX'],label:'1T},{data:myarray['DIFF4TMAX'],label:'4T},{data:myarray['DIFF16TMAX'],label:'64T},{data:myarray['DIFF256TMAX'],label:'256T},{data:myarray'diff14tmax,label:'1024tmax,label:'1024T},{“,axisLabelUseCanvas:true},yaxis:{axisLabel:'ADC bins[-]”,axisLabelUseCanvas:true,min:0,max:1e8});
//运行B2B
myarray=[];
//log(“我的对象:%o”,myarray);
$.plot(“#abscfoua47bccmb2b_stat””,[{data:myarray['ABS1TMAX'],label:“1T”},{data:myarray['ABS4TMAX'],label:“4T”},{data:myarray['ABS16TMAX'],label:“64T”},{data:m
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Beam Current Change Monitors</title>
        <link href="./examples.css" rel="stylesheet" type="text/css">
        <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]-->
        <script language="javascript" type="text/javascript" src="./jquery.js"></script>
        <script language="javascript" type="text/javascript" src="./flot/jquery.flot.js"></script>
        <script language="javascript" type="text/javascript" src="./flot/jquery.flot.time.js"></script>
        <script language="javascript" type="text/javascript" src="./flot/jquery.flot.navigate.js"></script>
        <script language="javascript" type="text/javascript" src="./flot-axislabels/jquery.flot.axislabels.js"></script>

        <script type="text/javascript">
        $(document).ready(function() {
            // this is tables array to display accompanied with ymax restriction
            var tables = new Array (["cfoua47bccmb1a_stat", 1e8], ["cfoua47bccmb2a_stat", 1e8], ["cfoua47bccmb1b_stat", 1e8], ["cfoua47bccmb2b_stat", 1e8]);

            var myarray = new Array();
            // NOTE: unfortunately we now need to dumbly copy this block 4 times. This is because we are not able to change
            // the argument in PHP function loadData dynamically. This function is evaluated at the server side. The only
            // way we could use it dynamically is to call php script through ajax, however then there is an issue with passing
            // arguments back to javascript. Instead, call to loadData generates javascript code, which fills the myarray variable by
            // data loaded from the database.
            //console.log("my object: %o", myarray);
            <?php include 'fetchdata.php';loadData("cfoua47bccmb2a_stat");?>
            //console.log("my object: %o", myarray);
            $.plot("#abscfoua47bccmb2a_stat", [{data:myarray['ABS1TMAX'], label: "1T"}, {data:myarray['ABS4TMAX'], label: "4T"},{data:myarray['ABS16TMAX'], label: "16T"},{data:myarray['ABS64TMAX'], label: "64T"},{data:myarray['ABS256TMAX'], label: "256T"},{data:myarray['ABS1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true}} );
            $.plot("#diffcfoua47bccmb2a_stat", [{data:myarray['DIFF1TMAX'], label: "1T"}, {data:myarray['DIFF4TMAX'], label: "4T"},{data:myarray['DIFF16TMAX'], label: "16T"},{data:myarray['DIFF64TMAX'], label: "64T"},{data:myarray['DIFF256TMAX'], label: "256T"},{data:myarray['DIFF1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true, min:0, max: 1e8}} );

            // make it empty again and run for B2A
            myarray = [];
            <?php  loadData("cfoua47bccmb1a_stat");?>
            $.plot("#abscfoua47bccmb1a_stat", [{data:myarray['ABS1TMAX'], label: "1T"}, {data:myarray['ABS4TMAX'], label: "4T"},{data:myarray['ABS16TMAX'], label: "16T"},{data:myarray['ABS64TMAX'], label: "64T"},{data:myarray['ABS256TMAX'], label: "256T"},{data:myarray['ABS1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true}} );
            $.plot("#diffcfoua47bccmb1a_stat", [{data:myarray['DIFF1TMAX'], label: "1T"}, {data:myarray['DIFF4TMAX'], label: "4T"},{data:myarray['DIFF16TMAX'], label: "16T"},{data:myarray['DIFF64TMAX'], label: "64T"},{data:myarray['DIFF256TMAX'], label: "256T"},{data:myarray['DIFF1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true, min:0, max: 1e8}} );


            // make it empty again and run for B1B
            myarray = [];
            <?php loadData("cfoua47bccmb1b_stat");?>
            //console.log("my object: %o", myarray);
            $.plot("#abscfoua47bccmb1b_stat", [{data:myarray['ABS1TMAX'], label: "1T"}, {data:myarray['ABS4TMAX'], label: "4T"},{data:myarray['ABS16TMAX'], label: "16T"},{data:myarray['ABS64TMAX'], label: "64T"},{data:myarray['ABS256TMAX'], label: "256T"},{data:myarray['ABS1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true}} );
            $.plot("#diffcfoua47bccmb1b_stat", [{data:myarray['DIFF1TMAX'], label: "1T"}, {data:myarray['DIFF4TMAX'], label: "4T"},{data:myarray['DIFF16TMAX'], label: "16T"},{data:myarray['DIFF64TMAX'], label: "64T"},{data:myarray['DIFF256TMAX'], label: "256T"},{data:myarray['DIFF1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true, min:0, max: 1e8}} );

            // run B2B
            myarray = [];
            <?php loadData("cfoua47bccmb2b_stat");?>
            //console.log("my object: %o", myarray);
            $.plot("#abscfoua47bccmb2b_stat", [{data:myarray['ABS1TMAX'], label: "1T"}, {data:myarray['ABS4TMAX'], label: "4T"},{data:myarray['ABS16TMAX'], label: "16T"},{data:myarray['ABS64TMAX'], label: "64T"},{data:myarray['ABS256TMAX'], label: "256T"},{data:myarray['ABS1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true}} );
            $.plot("#diffcfoua47bccmb2b_stat", [{data:myarray['DIFF1TMAX'], label: "1T"}, {data:myarray['DIFF4TMAX'], label: "4T"},{data:myarray['DIFF16TMAX'], label: "16T"},{data:myarray['DIFF64TMAX'], label: "64T"},{data:myarray['DIFF256TMAX'], label: "256T"},{data:myarray['DIFF1024TMAX'], label: "1024T"}], {xaxis: { mode: "time", axisLabel: 'Time [h]',axisLabelUseCanvas: true}, yaxis:{axisLabel: 'ADC bins [-]', axisLabelUseCanvas: true, min:0, max: 1e8}} );
        });
        </script>

    </head>
    <body>
        <div id="header">
            <h1 align="center">BCCM status panel</h1>
        </div>
        <h2 align="center">operational systems</h2>
        <div class="demo-container" style="width:100%; display:table;">
            <div style="display: table-row">
                <div style="display:table-cell;"><h3 align="center">CFO-UA47-BCCM-B1A</h3></div>
                <div style="display:table-cell;"><h3 align="center">CFO-UA47-BCCM-B2A</h3></div>
            </div>
            <div style="display: table-row">
                <div id="abscfoua47bccmb1a_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
                <div id="abscfoua47bccmb2a_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
            </div>
        </div>
        <div class="demo-container" style="width:100%; display:table;">
            <div style="display: table-row">
                <div id="diffcfoua47bccmb1a_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
                <div id="diffcfoua47bccmb2a_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
            </div>
        </div>
        <h2 align="center">development systems</h2>
        <div class="demo-container" style="width:100%; display:table;">
            <div style="display: table-row">
                <div style="display:table-cell;"><h3 align="center">CFO-UA47-BCCM-B1B</h3></div>
                <div style="display:table-cell;"><h3 align="center">CFO-UA47-BCCM-B2B</h3></div>
            </div>
            <div style="display: table-row">
                <div id="abscfoua47bccmb1b_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
                <div id="abscfoua47bccmb2b_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
            </div>
        </div>
        <div class="demo-container" style="width:100%; display:table;">
            <div style="display: table-row">
                <div id="diffcfoua47bccmb1b_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
                <div id="diffcfoua47bccmb2b_stat" class="demo-placeholder" style="width:45%; display:table-cell;"></div>
            </div>
        </div>


        <div id="footer">
            Issues? mail to: <a href="mailto:david.belohrad@cern.ch?Subject=Issue%20with%20BCCM%20web%20page" target="_top">david.belohrad@cern.ch</a>
        </div>

    </body>
</html>