2015-01-22 1 views
0

Я использую этот код для обновления моего основного DIV в моей главной странице (названный readings.php):JQuery вопрос времени Кнопки ответа в то время как авто освежающего DIV в каждой X второй

jQuery(document).ready(
    function intervalle() { 
     setInterval(jQuery('#myMainDiv').load('readings_content.php'), 10000); 
}); 

В readings_content.php , показания датчиков проверяются из базы данных и рисуют экран, подобный экранам камеры безопасности, в соответствии с количеством датчиков. Этот код выглядит следующим образом:

$db_sensors->query("select * from tbl_sensors where status=1"); 
    if ($db_sensors->recordcount>0){ 
     while ($db_sensors->nextrow()){ 
     $sensors=$db_sensors->fields; 

      $sensorname = $sensors["name"]; 
      $sensorvalue = $sensors["lastreading"]; 

     echo "<div>"; 
     echo "Sensor Name: ".$sensorname."<br>"; 
     echo "Last Reading: ".$sensorvalue; 
     echo "</div>"; 
    }} 

Эта идея отлично работает. Но из-за этого цикла (есть 9-16 датчиков) обновление требует времени. Обычно это нормально, потому что страница не перезагружается, просто изменяя значения, когда читает новое считывание сенсора. Но на моей главной странице есть кнопка (readings.php). Для ответа на эту кнопку требуется почти 10 секунд, даже если я использую локальную базу данных.

Я хочу сделать этот процесс обновления быстрее. Если это возможно, я хочу остановить эту обновленную вещь (или то, что когда-либо происходит на странице), когда я нажимаю кнопку. и активировать его событие onClick.

+2

Правильно ли вы обрабатываете сеансы в php, чтобы запросы обрабатывались одновременно, а не синхронно? –

+0

Спасибо, Кевин за ваш ответ. Но я как-то решил проблему. И написал это как ответ. – cvdogan

ответ

0

После всех моих исследований я начал пробовать всевозможные варианты. И это только в порядке, когда я изменить код JQuery, как это:

setTimeout('sensorcells_load()', 10000); 

function sensorcells_load() 
{ 
    jQuery('#sensorcells').load('dashboard_content.php'); 
    setTimeout('sensorcells_load()', 10000); 
} 

Я не JQuery человек, и я не знаю, почему это работает, но другой нет. Но это решило мою проблему.

+1

Я бы предложил два изменения: замените '' sensorcells_load() ''на' sensorcells_load' в обоих местах, затем переместите внутренний setTimeout внутри полного обратного вызова вызова .load. Первое изменение - это просто хорошая практика, а вторая позволит избежать проблемы с запросом на укладку, если у пользователя или вашего сервера возникли проблемы с подключением. –

Смежные вопросы