SiZE
Новичок
Для тестирования написал такой скрипт, собственно все что он делает, каждый раз обновляет строку в файле с данными о том сколько всего надо сделать и сколько всего сделано на данный момент:
Обращаюсь к нему через $.ajax, в котором указал для beforeSave такой код:
Скрипт который читает
И вообщем все пять запросов возвращают одни и те же данные данные когда 'done' = уже 100%. Я заметил что в хроме они выполняются только после основого запроса, хотя запросы должны быть асинхронные. Что сделать, чтобы данные возвращались по мере их запроса?
PHP:
$total = 500000;
$start = time();
$fo = fopen("test.log","w");
fputs($fo,CJSON::encode(array(
'start' => $start,
'done' => 0,
'total' => $total,
)));
fflush($fo); // сбрасываем файл не дожидаясь окончания работы скрипта
fclose($fo);
for( $i=1; $i<=$total; $i++ ){
$percent = floor( $i * 100 / $total );
$fo = fopen("test.log","w");
fputs($fo,CJSON::encode(array(
'start' => $start,
'done' => $percent,
'total' => $total,
)));
fflush($fo);
fclose($fo);
}
HTML:
for( var i=1; i<=5; i++){
setTimeout(function(){
// здесь я обращаюсь к скрипту, который читает файл test.log
// и данные выводит в консоль
$.ajax ....
},(i*1000));
}
PHP:
$file = file_get_contents("test.log");
header('Content-type: application/json');
echo $file;
exit;
Последнее редактирование: