Задача такая:
Через форму отправляю на сервер url страницы, она парсится, в контроллере внутри функции происходят манипуляции с dom деревом страницы - вытаскиваю все мне необходимое со страницы. Ради примера - вытащить все ссылки со страницы и поместить в массив. Ситуация складывается следующая:
Во вьюхе, для отправки данных, использую ActiveForm и Pjax, вьюха обращается в экшену index, оттуда вызывается функция Paresepage, где я получаю все ссылки со страницы, далее в этой же функции в цикле обрабатываю ссылки - формирую правильные url'ы, убираю битые ссылки, проверяю ответ от сервера и т.д.
Процесс выполняемый в функции получается достаточно трудоёмкий. Необходимо сделать следующее:
При обработке каждой ссылки внутри цикла выводить на страничу пользователю сколько ссылок уже обработано, т.е. сделать индикатор прогресса. как такое реализовать?
Вьюха:
<?php Pjax::begin(['id' => 'pjax']); ?>
<?php $form = ActiveForm::begin(['id' => 'analise-form', 'method' => 'post',]); ?>
<?= $form->field($model, 'site')->textInput(['maxlength' => true]); ?>
<div class="form-group">
<?= Html::submitButton('Отправить', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
<pre>
<?php if(isset($url) && isset($page_item)){
print_r($url);
print_r($page_item);
} ?>
</pre>
<?php Pjax::end(); ?>
И код, который принимает форму и обращается в функцию парсинга:
public function actionIndex()
{
$model = new AnaliseForm();
$url = '';
$page = '';
$page_item = '';
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$url = Yii::$app->request->post();
$url = htmlspecialchars(strip_tags($url['AnaliseForm']['site']));
$page_item = AnaliseController::actionParesepage($url); //функция анализа ссылок на странице
}
return $this->render('index', [
'model' => $model,
'url' => $url,
'page_item' => $page_item,
]);
}
Сейчас после отправки формы страничка долго грузится и выдаёт сразу весь ответ - целиком готовый массив. Но надо сделать чтоб выводился прогресс, а ещё лучше выводить по 1 ссылке на страниц в порядке обработки.