Получение данных работы PHP скрипта с jQuery

Когда PHP скрипт выполняется долго и не понятно что в нём творится, например долгий цикл, затянувшаяся обработка данных, дождливая погода или другие колдовские штучки. То есть желание увидеть что творится с данными и на какой стадии выполнения находится скрипт программы. Один из вариантов использовать функцию flush() которая очищает буфер вывода PHP и всё его содержимое отправляет в браузер пользователя.

<?
header('Content-Type: text/plain; charset=utf-8');
//неограниченное время выполнения скрипта
set_time_limit(0);
//цикл
for($i=0;$i<1000;$i++){
	//вывод данных
	echo "\nцикл: $i количество: ".round($i/10)."%";
	//отчистка и отправка данных буфера
	flush();
	//пауза для наглядности
	usleep(100000);
}

Другой вариант использовать записывать данные скрипта в отдельный файл и этот файл периодически подгружать в браузер. Для этого понадобится записывать данные в файл из скрипта:

<?
set_time_limit(0);
for($i=0;$i<1000;$i++){
	//запись данных в файл log.txt, нужно изменить права на запись
	file_put_contents('log.txt', "цикл: $i<br> количество: ".round($i/10)."%");
	//пауза для наглядности
	usleep(100000);
}

Дальше файл с данными будет подгружать jQuery функция load:

<!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(){
		//загружаем данные из файла и отображаем в элементе id="progress"
		$('#progress').load('log.txt');
	}, 1000); //каждую секунду
});	
</script>
</head>
<body>
	<div id="progress"></div>
</body>
</html>
Запись опубликована в рубрике Программирование с метками , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт защищен политикой конфиденциальности и условиями использования reCAPTCHA и Google.