За последние 24 часа нас посетили 16435 программистов и 1677 роботов. Сейчас ищут 846 программистов ...

sleep в скрипте и ajax

Тема в разделе "PHP для новичков", создана пользователем car1ot, 10 июл 2018.

  1. car1ot

    car1ot Новичок

    С нами с:
    26 май 2017
    Сообщения:
    21
    Симпатии:
    0
    Присутствует скрипт. Нужно дать ответ клиенту по истечению определённого кол-ва времени. Для этого использую функцию sleep() в php и после неё отправляется json ответ. Но в течение работы sleep() с клиента не получается отправить запросы к другим php файлам путём ajax...
    PHP:
    sleep($grph->slptime);

    $request = array(
    'status' => 'ended',
    'finished' => 'Выполнено: '.$grph->slptime,
    );
    echo json_encode($request);
    exit();

    Клиентский AJAX:

    $.ajax({
    type: 'POST',
    url: '/ajax/action.php',
    data: {},
    dataType: 'json',
    success : function (request) {
    $("#logbar").text(request["finished"]);
    },
    error : function () {
    $("#logbar").text('Ожидание клика...');
    }
    });
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    В том JS-коде, что вы показали, нет ничего, что могло бы блокировать последующую работу скриптов. Делаем вывод: есть что-то "за кадром", чего вы не показали и что влияет на такое поведение. Например, где-то в коде прописаны общие параметры для всех Ajax-запросов:
    Код (Javascript):
    1. $.ajaxSetup({
    2.     async : false
    3. });
    --- Добавлено ---
    ... и не забывайте в консоль заглядывать.
     
    car1ot нравится это.
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Сессии :) Файл сессии блокируется на время выполнения скрипта, поэтому другие скрипты, использующие сессию, не могут туда писать. Выход: считать всё из сессии в начале долгого скрипта, после чего вызывать https://php.net/session_write_close
     
    car1ot нравится это.