Php menunjukkan kemajuan skrip panjang

Saya dapat melakukan ini menggunakan dua aplikasi kosong. Kasus penggunaannya adalah mengulang sekumpulan file log csv harian dan memuat data ke dalam tabel temp untuk melakukan beberapa operasi basis data dan menampilkan hasilnya dalam kisi

Pengguna memilih tanggal mulai dan tanggal akhir dalam aplikasi kontrol bersama dengan beberapa parameter lain yang akan digunakan untuk memfilter data dari csv. OnValidate dari kontrol menetapkan semua tanggal antara tanggal mulai dan tanggal akhir dalam variabel global yang berisi array dari setiap tanggal. Jadi jika pengguna memilih 28/3 sebagai awal dan 30/3 sebagai akhir, lariknya akan menjadi ~ {‘20220328’, ‘20220329’, ‘20220330’}. Itu cocok dengan format tanggal di nama file csv

Kontrol mengalihkan ke aplikasi kosong pertama yang berisi HTML/AJAX, dan itu memanggil aplikasi kosong ke-2 yang menjalankan PHP untuk melakukan tugas

Aplikasi kosong kedua memiliki loop 'foreach' yang melewati setiap tanggal dalam larik yang diteruskan dari kontrol asli. Secara bertahap, penghitung setiap kali berputar. Jumlah total file yang akan diproses adalah jumlah anggota array, jadi persentase progres saat ini adalah penghitung dibagi total

Pada setiap loop, PHP di kontrol kedua menjalankan prosedur tersimpan di server SQL untuk mengimpor CSV, meneruskan parameter nama file yang didasarkan pada tanggal dalam array

Selama setiap putaran, aplikasi kosong kedua menulis persentase selesai dan pesan yang akan ditampilkan di layar ("Sedang memproses file ". $datefilter. “. csv") ke array yang disandikan JSON dalam file teks

Aplikasi kosong pertama disegarkan setiap 250 md dan dibaca dari larik JSON di file teks. Ini menggunakan persentase untuk memperbarui bilah kemajuan dan menampilkan pesan di bawahnya

Saya yakin saya tidak membuatnya sendiri - beberapa komentar dalam kode pasti ditulis oleh orang lain. Saya menemukannya di sini di forum ini atau menggabungkannya dari sumber online lainnya. Saya akan dengan senang hati membagikan kodenya jika ada yang ingin mencoba mengadaptasinya untuk penggunaan mereka sendiri

Php menunjukkan kemajuan skrip panjang
Kami mungkin memiliki permintaan ke sistem backend yang dapat memicu proses yang berjalan lama seperti mencari data dalam jumlah besar atau proses database yang berjalan lama. Kemudian halaman web ujung depan mungkin macet dan menunggu proses selesai. Selama proses ini, jika kami dapat memberikan beberapa informasi kepada pengguna tentang kemajuan proses back end, ini dapat meningkatkan pengalaman pengguna. Sayangnya, dalam aplikasi web, ini sepertinya bukan tugas yang mudah karena bahasa skrip web tidak mendukung multithreading dan HTTP tidak memiliki kewarganegaraan. Kami sekarang dapat memiliki AJAX untuk mensimulasikan proses waktu nyata. Hari ini kita akan menggunakan PHP+jQuery untuk mensimulasikan proses untuk mendapatkan progres dari proses yang berjalan lama secara dinamis

Ciptakan kemajuan. php

<?php
 // recommended to prevent caching of event data.
 header('Cache-Control: no-cache');
 session_start();
 $_SESSION['progress_status'] = 0;
 ?>
 <!DOCTYPE html>
 <html>
    <head>
       <title>TODO supply a title</title>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       http://js/jquery.js
       <!-- Latest compiled and minified CSS -->
       <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
    
       $(document).ready(function () {
       function getProgress() {
          var random = Math.random(1000);
          $.post('progress_status.php', {random: random}, function (status) {
             var progressBar = $(".progress-bar");
             progressBar.attr('aria-valuenow', status);
             progressBar.css('width', status + '%');
             progressBar.html(status + '%');
             if (status 
    </head>
    <body>
        

Sample Progress Bar

0%

</div>

Start very log task

</div> </body> </html Create progress_start.php

<?php
// recommended to prevent caching of event data.
header('Cache-Control: no-cache');
$_SESSION['progress_status'] = 0;
for ($i = 1; $i <= 100; $i++) {
 session_start();
 $_SESSION['progress_status'] = $i;
 session_write_close();
 sleep(1);
}
?>

Buat progress_status. php

<?php
// recommended to prevent caching of event data.
header('Cache-Control: no-cache');
session_start();
echo $_SESSION['progress_status'];
?>

Bagikan ini

  • Twitter
  • Facebook

Seperti ini

Suka Memuat.