Ilgai veikiančio PHP skripto duomenų atvaizdavimas su jQuery

Kai PHP skripto vykdomas trunka ilgą laiką, ir neaišku, kas ten vyksta, pavyzdžiui, ilgas ciklas, užtrukęs apdorojimas, lietingi orai, ar kiti stebuklingi dalykai. Tai atsiranda noras matyti, kas vyksta su duomenimis ir kokiame eigos etape yra programos vykdymas. Vienas iš variantų funkcija flush(), kuri išvalo PHP išvedimo buferį ir visas jo turinys siunčiamas į naudotojo naršyklę.

<?
header('Content-Type: text/plain; charset=utf-8');
//neribojamas skripto vykdymas
set_time_limit(0);
//ciklas
for($i=0;$i<1000;$i++){
	//duomenų išvedimas
	echo "\nciklas: $i eiga: ".round($i/10)."%";
	//išvalyti ir siųsti PHP išvedimo buferio
	flush();
	//pauzė stebėjimui
	usleep(100000);
}

Kita galimybė rašyti duomenis į atskirą failą ir parodyti šio failo turinį naršyklėje laikas nuo laiko atnaujinant. Reikės rašyti duomenis į failą:

<?
set_time_limit(0);
for($i=0;$i<1000;$i++){
	//rašyti duomenis į failą log.txt, turite nustatyti failų rašymo teises
	file_put_contents('log.txt', "loop: $i<br> progress: ".round($i/10)."%");
	//pauzė stebėjimui
	usleep(100000);
}

Toliau duomenų failas bus nuskaitytas su JQuery load funkcija:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8" />
<title>Progress</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
var reload = setInterval(
	function(){
		//nuskaityti failo turinį ir atvaizduoti elemente su id="progress"
		$('#progress').load('log.txt');
	}, 1000); //kas 1 sekundę
});	
</script>
</head>
<body>
	<div id="progress"></div>
</body>
</html>
Šis įrašas buvo paskelbtas kategorijoje Programavimas su žyma , , , , .

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.