Ajax sayfa sürekli güncelleme yok

0 Cevap php

Geçenlerde küçük bir proje için AJAX kullanarak keşfetmeye başladım ve ben istiyorum gibi pürüzsüz değil ama ben makul bir başarı elde ettik.

Temel kurulum Excel ile arayüzleri ProphetX adında bir uygulama borsa fiyatlarını gösterir olmasıdır. Excel'de değiştirmek gibi fiyatları güncellenir. VBA kullanarak her defasında SQL08 DB içine bir fiyat güncellemeleri elektronik tablodan verileri kaydetmek. Bu bazen saniyede birkaç kez olabilir.

Ben SQL DB bağlanmak ve tabloların içine veri yüklemek bir Apache sunucu üzerinde PHP kullanarak ve her saniyede bir kez bilgileri güncelleyerek tutmak için bir javascript fonksiyonu. Ben zaman zaman sayfa sadece sen zaten o kadar varsa asmak, ya da veri hızla güncellenmektedir ediliyor, özellikle yukarı çekin eğer boş bir ekran yük olacağı ancak fark ettik. Yani benim soru ete: Bu hıçkırık neden olabilir benim kodda bir şey var mı? Ben onları izliyorduk gibi ağ veya sunucu kaynaklarını kalabalıklaşıyor şüphe ve düşük görünüyor.

Ayrıca ben ağ trafiğini izlemek için Wireshark kullanılan ve sayfa yukarı yük ve tarayıcıda boş gösterir, benim makineye sunucudan gönderilen HTML görebilirsiniz.

Herhangi bir yardım / kodlama tarzı eleştiri çok kaynak kod aşağıda, takdir edilmektedir.

Index.php:

<html>
<head>
<script type="text/javascript" src="update.js"></script>
</head>
<body onLoad = update()>
<font size = +2>
<?php
echo "
<div id = 'marketData'></div>
";
?>
</font>
</body></html>

Update.js:

function update()
{
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
     xmlhttp.onreadystatechange=function()
     {
         if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("marketData").innerHTML=xmlhttp.responseText;
        }
     }
     //URL needs a var to be passed via get for code to function in IE, thus Math.Random().
//I am also confused by this requirement.
    xmlhttp.open("GET","update.php?i="+ Math.random(),true);
    xmlhttp.send();
    var t = setTimeout("update()", 3000);
}

Update.php:

<?php
//connect to database
error_reporting(0);
    sqlsrv_configure("WarningsReturnAsErrors", 1);
    $server = "myServer";
    $db = "myDB";
    $connectionInfo = array("Database"=>"$db, "UID"=>"user", "PWD"=>"pass");
    $conn = sqlsrv_connect($server, $connectionInfo);

    if($conn)
    {
        echo "<font size =-1 color=green>Connection Established<br></font>";
    }
    else
    {
        echo"Connection not established:<br>";
        print_r(sqlsrv_errors());
    }   

    //Func calls sqlsrv_query($conn, [$symbol],[$DatabaseName])
    $stmt = sqlsrv_query($conn,query(array('sym1','sym2','sym3'), "electronic") );
    errorCheck($stmt);
    printTables("Electronic Commodity Prices", $stmt);

    $stmt = sqlsrv_query($conn,query(array('sym1','sym2','sym3'), "floor") );
    errorCheck($stmt);
    printTables("Floor Commodity Prices", $stmt);

    $stmt = sqlsrv_query($conn,query(array('sym1','sym2','sym3',... ,sym19), "natgas") );
    errorCheck($stmt);
    printTables("Natural Gas Commodity Prices", $stmt);

    sqlsrv_free_stmt($stmt);
    sqlsrv_close( $conn);

    //This function prints out the tables
    function printTables($tableName, $stmt)
    {
        echo
        "
        $tableName<hr>
        <table cellspacing ='5' cellpadding = '5'>
        <tr>
            <th>Symbol</th>
            <th>Product</th>
            <th>Last Price</th>
            <th>Change</th>
            <th>High Price</th>
            <th>Low Price</th>
            <th>Previous Price</th>
            <th>Trade Time</th>
        </tr>
        ";
        while($row=sqlsrv_fetch_array($stmt))
        {
        echo 
        "
        <tr>
            <td>$row[symbol]</td>
            <td><font size =+3 color = blue>$row[description]</font></td>
            <td>$row[last]</td>
            <td><font size =+5> $row[change]</font></td>
            <td>$row[highPrice]</td>
            <td>$row[lowPrice]</td>
            <td>$row[previousprice]</td>
            <td>" .  date("j M g:i",strtotime($row['tradetime']))  . "</td>
        </tr>
        ";
        }
        echo"</table><hr>";
    }
    function query($symbols, $db)
    {
    $count = count($symbols);
        $stmt = 
        "
                select distinct id,symbol,description,last,change,highPrice,lowPrice,previousprice,tradetime from $db
                where ";
                for($i = 0; $i< $count; $i++)
                {
                    $stmt .= "id in (select MAX(id)from $db where symbol ='$symbols[$i]') ";
                    if($i != $count-1)
                    {
                        $stmt.= "or ";
                    }
                }
                $stmt .= "order by description asc";
                // id in (select MAX(id)from $db where symbol ='$symbols[0]')
                // or id in (select MAX(id)from $db where symbol ='$symbols[1]')
                // or id in (select MAX(id)from $db where symbol ='$symbols[2]') 
                    // order by description asc
        return $stmt;
    }
    function errorCheck($stmt)
    {
        if( $stmt=== false )
        {
            echo "Error in statement preparation/execution.\n";
            die( print_r( sqlsrv_errors(), true));
        }
    }
?>

0 Cevap