2013-06-05 6 views
0

Я разрабатываю php-консоль на основе базы данных synconizer. Это в основном обновление от одного дебатина до другого. Консольное приложение прекрасно, но я бы хотел сделать веб-страницу с живой реакцией 10 минут работы. как:Синхронизация базы данных в реальном времени PHP и AJAX

Updating product#1 .... READY! 

Updating product#2 .... 

Мой вопрос, как я могу сделать это с помощью AJAX? Есть ли какое-то событие, которое вызывает ответ изнутри php-итерации не после него? Или мне нужно сделать итерацию запросов AJAX?

Спасибо!

+0

Если вам нужно только обновить каждые десять минут, в то время как вам есть открытая веб-страница, тогда да, вы можете использовать AJAX, вызванный javascript. Лучше бы посмотреть на cronjobs, так как это автоматически вызовет ваш синхронизирующий скрипт. –

ответ

1

Это не события, вызываемые на стороне PHP, что вы можете использовать на стороне клиента для запуска функций JS. По крайней мере, это нелегко сделать. Конечно, вы можете использовать некоторые, например, Comet, чтобы получить действительно интерактивный результат. Но подумайте, что гораздо проще сделать это следующим образом: . В php скрипте будет действовать только один продукт за вызов на основе product_id из параметра $ _GET. И этот скрипт, после того, как он отправил запрошенный продукт, вернет идентификатор следующего продукта для продолжения. Итак, вы просто вызываете AJAX в первый раз при попытке вашего продолжения.php, onComplete, этот вызов AJAX показывает ваше сообщение «Обновление продукта №1 .... ГОТОВ!», Получая идентификатор следующего продукта для продолжения. И это пока все сделано :)

+0

Ну да, это был мой план Б. Я надеялся на легкое решение, но все в порядке. :) – Gkali

+0

Сравнивая с Comet, это очень простой вариант. Я реализовал подобную вещь в одном проекте, и он работает как прелесть в течение нескольких часов экспорта;) Также подключил небольшой звук, когда была выполнена последняя операция. –

+0

Вы были правы! Работает как charm :) Также реализованы некоторые функции паузы и остановки. Еще раз спасибо! – Gkali

0

нет какого-либо событие, как это, но вы можете получить процент выполнения в процессе вызова Ajax, как следовать

$.ajax({ 
         xhr: function() 
         { 
          var xhr = new window.XMLHttpRequest(); 
          //Upload progress 
          xhr.upload.addEventListener("progress", function(evt){ 
           if (evt.lengthComputable) { 
            var percentComplete = (evt.loaded/evt.total)*100; 
            //Do something with upload progress 
            var per= Math.round(percentComplete); 

//per gives you percentage of progress 

           } 
          }, false); 
          //Download progress 
          xhr.addEventListener("progress", function(evt){ 
           if (evt.lengthComputable) { 
            var percentComplete = (evt.loaded/evt.total)*100; 
            //Do something with download progress 
            var per= Math.round(percentComplete); 
             //per gives you percentage complete of process 

           } 
          }, false); 
          return xhr; 
         }, 
         url:'your url here', 
         data:{'data':data}, 
         type:"POST", 
         success:function(n){ 
          //ajax completion handler 
         } 
        });