Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah ini polling panjang yang sebenarnya?

Polling sedikit lebih sulit daripada waktu yang sederhana :hanya karena umumnya semua hal yang Anda keluarkan ke browser akan ditafsirkan setelah selesai. Contoh Anda cukup jelas :

success:function(data) {
    var json = data;
    $("#commidwin").append(json['msg']);
    last_msg_id = json["last_msg_id_db"];
    setTimeout("load_msgs()", 1000);
},

jQuery akan menunggu hingga respons selesai untuk membangun data variabel dan kemudian akan memanggil panggilan balik sukses Anda.

Salah satu cara untuk membuat polling panjang adalah dengan memiliki tugas dan pengikut :

  • tugasnya adalah loop "tak terbatas", ia tidak menampilkan apa pun kecuali hanya menangkap dan memicu peristiwa, dimasukkan ke dalam "kotak".

  • pengikut adalah panggilan ajax yang dilakukan setiap X detik, terlihat di dalam "kotak" yang diisi oleh tugas, dan segera bertindak di dalam halaman.

Berikut adalah contoh polling yang lama, tidak ada follower, hanya sebuah event (release) yang menghentikan polling, tapi Anda akan mendapatkan idenya :

<?php

// For this demo
if (file_exists('poll.txt') == false)
{
    file_put_contents('poll.txt', '');
}

// If this variable is set, a long-polling is starting...    
if (isset($_GET['poll']))
{

    // Don't forget to change the default time limit
    set_time_limit(120);

    date_default_timezone_set('Europe/Paris');
    $time = time();

    // We loop until you click on the "release" button...
    $poll = true;
    $number_of_tries = 1;
    while ($poll)
    {
        // Here we simulate a request (last mtime of file could be a creation/update_date field on a base)
        clearstatcache();
        $mtime = filemtime('poll.txt');

        if ($mtime > $time)
        {
            $result = htmlentities(file_get_contents('poll.txt'));
            $poll = false;
        }

        // Of course, else your polling will kill your resources!
        $number_of_tries++;
        sleep(1);
    }

    // Outputs result
    echo "Number of tries : {$number_of_tries}<br/>{$result}";
    die();
}

// Here we catch the release form
if (isset($_GET['release']))
{
    $data = '';
    if (isset($_GET['data']))
    {
        $data = $_GET['data'];
    }
    file_put_contents('poll.txt', $data);
    die();
}
?>

<!-- click this button to begin long-polling -->
<input id="poll" type="button" value="Click me to start polling" />

<br/><br/>

Give me some text here :
<br/>
<input id="data" type="text" />
<br/>

<!-- click this button to release long-polling -->
<input id="release" type="button" value="Click me to release polling" disabled="disabled" />

<br/><br/>

Result after releasing polling :
<div id="result"></div>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">

    // Script to launch polling
    $('#poll').click(function() {
        $('#poll').attr('disabled', 'disabled');
        $('#release').removeAttr('disabled');
        $.ajax({
            url: 'poll.php',
            data: {
                poll: 'yes' // sets our $_GET['poll']
            },
            success: function(data) {
                $('#result').html(data);
                $('#poll').removeAttr('disabled');
                $('#release').attr('disabled', 'disabled');
            }
        });
    });

    // Script to release polling
    $('#release').click(function() {
        $.ajax({
            url: 'poll.php',
            data: {
                release: 'yes', // sets our $_GET['release']
                data: $('#data').val() // sets our $_GET['data']
            }
        });
    });

</script>

Demonstrasi :di sini .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 Cara Mengkonversi antara Desimal dan Heksadesimal di MySQL

  2. MySQL Workbench tidak dapat memuat mysql.proc

  3. Ekspor MySQL ke outfile:karakter pelarian CSV

  4. gagal mengeksekusi pernyataan dengan php dan mysql

  5. JSON_STORAGE_SIZE() – Temukan Ukuran Penyimpanan Dokumen JSON di MySQL