Ajax до PHP Проблема с циклом - PullRequest
0 голосов
/ 07 марта 2020

У меня проблема с непрерывным Ajax до PHP l oop. Код (ниже) работает абсолютно нормально. Однако я нахожу, что он будет работать в течение 2, 3 или более часов или по мере необходимости ... но затем будет "x минутный" перерыв, когда он не будет работать или производить какие-либо журналы ... прежде чем один раз "снова" возобновится в течение 2, 3 или более часов.

$.ajax({
    async: false,
        type: "POST",
        url: ajaxURL,
        dataType: 'json',
        data: {functionname: 'conditionTrade', arguments: [c_piars, c_timeframes, usd_amount ,stop_loss, stop_loss_min, stop_loss_max]},
// post to php and check condition
        success: function (data) {
            if( !('error' in data) ) {
                var results = data["result"];
                if (results) {
                    $( "#tradelog" ).load( "tradelog.html" ); // <--- produce a log
                    var pft = c_piars+"profitloss.txt";
                    $( "#profit" ).load( pft );
                    checkCondition(); 
// recursion call to this same method ie. check again
                }
                else {
                    console.log(data.error);
                }
            var objDiv = document.getElementById("tradelog");
            objDiv.scrollTop = objDiv.scrollHeight;
        }},
        error: function(jqXHR, textStatus, errorThrown) {
            console.log("Error[refresh]: " + textStatus);
            console.log(jqXHR);
            checkCondition(); 
// recursion call to this same method ie. check again
         },

    });

Пожалуйста, кто-нибудь может посоветовать, почему этот l oop случайно ломается, а затем продолжает сам по себе. L oop предназначен для извлечения данных свечей (приблизительно каждые 5 секунд), а затем выполнения некоторых проверок технического анализа, прежде чем, наконец, выводить журнал того, были ли обнаружены условия TA. Код работает нормально. Однако это почти так, как если бы я физически не был на странице браузера, тогда он может случайно перестать работать на 15 минут или случайное время, прежде чем возобновится сам по себе. (Следовательно, я могу получить 2,3,4,5 часа непрерывных проверок, затем случайный отсев от 30 минут до 2 часов, прежде чем возобновить проверки в течение x часов). Что мне не хватает? Я рассмотрел использование различных браузеров, ресурсов браузера, целых rnet соединений, php тайм-аутов и c. но этот действительно царапает голову. Спасибо, если вы можете помочь.

Ps. В предыдущей версии я использовал циклический метод ajax - settimeout (5000), а не показанный «рекурсивный вызов этого же метода». Это в буквальном смысле могло бы продолжаться весь день без каких-либо выпадений, но я обнаружил, что время от времени он будет гоняться сам, не дожидаясь завершения предыдущего l oop. И поэтому я мог бы найти 2 или 3 записи журнала для одного и того же l oop. Как я могу стабилизировать этот l oop, чтобы выполнить так, как мне хотелось бы? Спасибо.

1 Ответ

1 голос
/ 17 марта 2020

Если у вас есть подобное: Как заставить setInterval также работать, когда вкладка неактивна в Chrome?

Если ваш скрипт / jsfiddle входит в консоль, просто направьте это к названию страницы, например. document.title = 'ваш вывод setInterval'; ... так что вы сможете лучше определить, что делает ваш интервал l oop при переключении табуляции и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...