php ilerleme çubuğu?

4 Cevap php

Php bir ilerleme çubuğu göstermek için bir yolu var mı? Ben kullanıcı php komut dosyası ne yaptığını bildirmek istiyorum.

İşte benim web sitesinden bir sonuç örnek http://www.bestsellprice.com/search.php?itemnum=0&keyword=harry+potter+book

Ben "Yükleniyor ..." diyor, sayfa tam dolu olduğunda, ben yükleme div gizlemek bazı metin ile bir statik yükleme görüntü var. Benim php script Amazon API için dışarı gidiyor, ebay api ve ekran diğer sitelerin bir çift kazır ve bunun yerine bir statik yükleme div ben aşağıdaki ile bu yükleme div güncellemek istiyorum

Yükleme amazon.com

/ / Ilerleme amazon, bitmiş yükleniyor div

Ebay.com Yükleniyor

vs vs

Bunu yapmak mümkün mü? yani nedir iyi yaklaşım olur? Teşekkürler öncesinde yardım için zaman!

4 Cevap

O an ne yaptığını PHP sormak AJAX kullanmak ve görevleri tamamlanmış ya da değil ne tanımlayan bir kuyruk sistemi var. Burada çok temel bir örnek:

Görev başladığında, aşağıdaki değişkenleri set yapmak:

$_SESSION['isEbayLoaded'] = false;
$_SESSION['isAmazonLoaded'] = false;

PHP yükler eBay sonra, gerekli başka ne sonra, amazon, sonra true isEbayLoaded açardı, ve ebay henüz yüklenmemiş ise daha sonra AJAX sadece PHP sorabilirsiniz. PHP yapmak gerekir Tüm bu değişkenler görevler tamamlanmış olmuştu demek ki, doğru olarak ayarlanmış olsaydı kontrol etmektir.

Ben gerçekten çok basit bir çözüm ile daha önce bu beceremedim:

ob_flush();

Gerekli tüm uygun sınıf isimleri ile tek bir div yaratıyor:

<div class="loading">
    Loading...
</div>

Sonra, benim PHP temelde:

foreach ($sites as $site) {
   printAndFlush(<<<CSS
     <style>
       div.loading {
         background: url($site.png) no-repeat right center;
       }
     </style>
CSS;

   scrapeSite($site);
}

Bu kazıma edileceği sitesi göstermek için bir arka plan stili kullanabilirsiniz.

Eğer biçimlendirme kullanmanız gerekiyorsa, sadece önceki div tarzı ayarlamak için bir tarzı ile birlikte, (benzersiz kimlik ile) her zaman div yeni bir "yükleniyor" yazdırabilirsiniz "display: none".

Tabii ki, bazı tarayıcılar şey vermeden önce en az 1024 byte (birşeyler 4k!) Gerektirir unutmayın.

En iyi yaklaşım javascript sunucuya ajax çağrıları yapmak ve nerede olduğunu bulmak için, yani kullanıcıya bazı geri bildirim verebilir.

Sen yükleme için bir ilerleme çubuğu sahip başlayabilirsiniz, ve o zaman sadece uygulamanın ilerleme göstermeye devam etmektedir.

Ben her site için bir istek yapmak ve diğer sayfa oluyor ne bildirmek için bu sayfadan çıkış (XML, JSON, ne olursa olsun) kullanmak istiyorsunuz.

Örneğin ... pseudo kodu:

  • siteleri toplamak
  • ajax sayfasını yükler döngüsü için
  • ajax sayfa bir durum iletisi, örneğin her isteği döner - "Amazon yükleniyor ...."

İşte bu!