как обновлять php div каждые несколько секунд

Поэтому я в основном пытаюсь реализовать онлайн-карточную игру на php и (возможно, минимальном) javascript, и до сих пор у меня есть графический интерфейс, настроенный на php, база данных с необходимыми таблицами (до сих пор) для хранения колод, полей и других различных данных. Я дошел до того, что у меня есть функция, которая инициализирует поля для обоих игроков и заполняет их поля и руки картами из их колоды. Я также получил его до точки, где игрок на другом компьютере или устройстве может взять номер комнаты игры и присоединиться к игре, чтобы увидеть точное инициализированное поле.

моя следующая цель состояла в том, чтобы иметь возможность настроить логику хода и позволить экрану обновляться для одного игрока, в то время как другой играет во время своего хода. Моя проблема в том, что я не уверен, какое минимальное жизнеспособное решение будет для этого, потому что у меня есть длинные сложные функции, которые отображают текущее поле на основе значений, которые приходят из таблицы полей. Так что моя идеальная логика настроена следующим образом:

//find game form

//host game form

//if host is set (post){
  //call insert field function (a long function that creates a table for the current game being played and initializes the field and hand with random cards from the deck table)  
  //link game to host for future field printing
  // populate host function (a function that prints a table of every card on the field with the most up to date variables to represent each spot) 
}

//if find is set (post){
  //call insert field function
  //link game to host for future field printing
  //a button form to start the game which begins by calling heads or tails
  // populate find function (same as host but for find player side)
}

//if start game is set (post){
  // do game logic such as coin flip which will be notified to opponent in a message field in the game table upon the refresh
}

Я упаковывал функцию populate host в обновленный div, как это:

print "<div><meta http-equiv='refresh' content='5' />"; //host populate just disapears
populatehost($roomnumber); //populates self and opponents in hosts perspsective
print "</div>";

так что функция будет вызываться каждые 5 секунд или около того, но это просто заставляет поле исчезать через 5 секунд. Так…

  1. Почему она исчезает?

  2. Как заставить его обновить страницу и просто отобразить один экземпляр поля с помощью функции заполнить поле?

  3. Жизнеспособен ли такой подход? если нет, то какой самый простой подход я мог бы принять и как?

  4. Я также попробовал решение, где функция вызывалась каждые 5 секунд и избавлялась, но я не уверен, что я делал это правильно, руководство PHP не объясняло это очень ясно, и после множества проб и ошибок я думаю, что я разбил свой сервер. Это было что-то вроде этого:

    //петля

    ob_start();
    populatehost($_SESSION['gamenumber']);
    sleep(5);
    ob_end_clean();
    

Я продолжал играть с этой логикой, но он либо печатал бесконечно, не печатал вообще, или разбил мой сервер. Я боюсь играть вокруг еще больше из-за страха сбоя сервера снова. Может быть, кто-то может объяснить правильный способ сделать это или почему это не жизнеспособно, если это не так?

Я сожалею, если это глупые вопросы, я провел дни и дни, исследуя подходы к этой проблеме, я не был уверен, если я мог бы реализовать его с помощью javascript или ajax вместе с моей функцией печати поля, я попробовал некоторые, и они не работали, и я не уверен, если это потому, что мой подход жизнеспособен или нет.

1 ответ

  1. Вы можете взять javascript или Ajax справка для div вы можете назначить идентификатор div и идентификатор вызова в javascript:

    jQuery(function () {
        var $els = $('div[id^=quote]'),
            i = 0,
            len = $els.length;
    
        $els.slice(1).hide();
        setInterval(function () {
            $els.eq(i).fadeOut(function () {
                i = (i + 1) % len
                $els.eq(i).fadeIn();
            })
        }, 2500)
    })
    

    проверить эту скрипку:

    http://jsfiddle.net/arunpjohny/asTBL/

    Спасибо