Http isteği yapılırken GUI Uygulama yanıt vermemeye başlıyor

1 Cevap php

Ben sadece temelde bir uzaktan test istemcisi olarak hareket yapmak için bir SimpleTest Web Test durumda etrafında bir GUI (php-gtk) arabirimi sarar benim ilk uygun küçük masaüstü GUI uygulaması yaptık.

Her zaman yerel Web Test dava benim sunucu üzerinde oturan (yani bir XHTML arayüzü var) başka SimpleTest durumda bir HTTP isteği gönderir, çalışır.

Uygulama, bana birden çok uzak testlerin bilgilerini toplar bir yerel testi çalıştırmanızı sağlar. O sadece bir 'Testi Başlat' düğmesine, 'Dur Testi' düğmesini ve her HTTP isteğinde yürütülen uzaktan testlerin sayısını azaltmak / artırmak için bir ayarı vardır. Her test-run tamamlamak için yaklaşık bir saat sürer.

Sorun, uygulama http isteklerini yapıyor çoğu zaman. Bir HTTP istek yapılıyor zaman Dahası, uygulamanın GUI tepkisiz.

Ben uygulama, vb Dur düğmesine basın, pencere yeniden boy için kullanıcı zaman vermek amacıyla istekleri arasındaki (Gtk :: main_iteration yineleme) birkaç saniye bekleyin yapma almış Ama, bu bütün testi yapar gerekli olandan çok daha uzun sürebilir çalıştırın.

<?php
require_once('simpletest/web_tester.php');

class TestRemoteTestingClient extends WebTestCase
 {

 function testRunIterations()
  {
  ...
  $this->assertTrue($this->get($nextUrl), 'getting from pointer:'. $this->_remoteMementoPointer);
  $this->assertResponse(200, "checking response for " . $nextUrl );
  $this->assertText('RemoteNodeGreen');
  $this->doGtkIterationsForMinNSeconds($secs);
  ...
  }

 public function doGtkIterationsForMinNSeconds($secs)
  {
  $this->appendStatusMessage("Waiting " . $secs);
  $start = time();
  $end = $start + $secs;

  while( (time()  < $end) )
   {
   $this->appendStatusMessage("Waiting " . ($end - time()));
   while(gtk::events_pending()) Gtk::main_iteration();
   }
  }
 }

Bir HTTP isteği yapan, aynı zamanda, duyarlı iken uygulama tutmak için bir yolu var mı?

Ben, ikiye uygulamayı bölmeyi düşünüyor yaşıyorum burada:

  • Test Kontrol Uygulama - Bir ayarlar-yazar / rapor-okuyucu olarak görür ve bu ayarlar dosyaya yazar ve bir rapor dosyasını okur.
  • Testi Runner Uygulama - Bir ayarlar-okuyucu / rapor yazar gibi davranır ve her yineleme için, ayarlar dosyasını okur testi çalıştırır, daha sonra bir rapor yazmak.

Yani aşağı kapatmak için bunu söylemek - I olur:

  • 'Test Kontrol Uygulamasında' üzerinde Dur düğmesine basın,
  • hangi ayarları dosyası yazar,
  • 'Test Runner Uygulama' tarafından okunduğu
  • bu daha sonra durur
  • durdu söylemek rapor dosyaya yazar
  • 'Test Kontrol Uygulama' raporu okur ve durumunu günceller
  • ve böylece ...

Ancak, devam edin ve ikiye bölünmüş uygulamayı önce - bu konu ile başa çıkmak için başka bariz bir yolu olup olmadığını merak ediyorum. Ben muhtemelen oldukça yaygın ve iyi ezilmiş yolu olduğunu sanıyorum.

Ayrıca aynı makine üzerinde oturup iki uygulama arasında mesaj göndermek için kolay bir yolu var mı?

1 Cevap

Aynı anda birden fazla süreçlerini yönetmek için bazı diş uygulamak zorunda olacak. Eğer arka planda bazı diğer görevleri yürütmek ederken yolu, app alışkanlık tepkisiz olsun.