Добрый день опишу логику,
пишу скрипт выгрузки товаров в вк, скрипт долгий может выполнятся овер9999 секунд не суть в настройках скрпита прописал
ini_set('max_execution_time', 0);
ignore_user_abort(true);
set_time_limit(0);
Для того чтобы игнорировать 504 ошибку так как хостер не дает возможность изменить время ожидания, в общем не суть.
смысл скрипта вкратце
1) определяю количество категорий которое надо выгружать.
2) это количество я пишу в кеш.
3) далее циклом прохожу по категориям вытаскиваю товары, и добавляю их в вк)
4) после каждой итерации я пишу в кеш сколько у меня категорий ушло в вк.
так как скрипт может завершится 504 ошибкой или будет долго выполнятся я решил сделать что то вроде прогресса, долбить к примеру каждые 2 секунды и определять сколько загрузилось категорий из общего числа.
долблю через ajax
и так суть.
1) я ajax'ом вызываю метод который отвечает за выгрузку в вк
2) я одновременно с этим же вызовом запускаю процес долбдения (main_timer)
function add_category() {
var data= $($('#form-category [name*="selected"]:checked').parents('tr').find('[name*="product"]')).serialize();
$.ajax({
type:'post',
dataType: "json",
url:'index.php?route=common/vk_integration/category_add&token=<?= $token?>',
data:data,
});
getProgress();
$('#progres_modal').modal('show');
main_timer = setInterval(progress();', 2000);
}
сам таймер
function progress() {
$.ajax({
type:'post',
url:'index.php?route=common/vk_integration/progress&token=<?= $token?>',
dataType: "json",
success: function (data) {
console.log(data);
if(data.success=='1'){
$('#progres_modal').modal('hide');
clearTimeout(main_timer);
}else{
$('#curent_result').text(data.current_item);
$('#count_result').text(data.count);
}
}
});
}
Чего я ожидаю
у скрипта экспорта вк длительного выполнения (пусть себе крутится)
а у таймера - Запрос - ответ и так далее .
Но на деле я получаю скрипт экспорта вк pennding и все долбления pennding но только скрипт закончит выполнение (200) все запросы будут 200
как будто все запросы попадают в очередь а мне надо что то вроде распараллеливания
ps написано все в одном контроллере