Infazdan önce AJAX dönüş veri tamamladı

4 Cevap php

Ben bir AJAX isteği yapıyorum bir sayfa var. Sayfanın amacı, ben para cezası çalışma var, bir e-posta, başlıklarını döndürmektir. Sorun bu bir posta kutusunda her e-posta için denir olmasıdır. Hangisi kutusuna bir kez posta başına çağırdı olacak demektir. Imap_open işlevi yürütme zamanı, bir saniye bu kadar denir, her zaman, bu yürütülür çünkü bu bir sorun nedenidir. Mevcut olduğu gibi bilgi dönmek ve yavaş yürütme zaman bir fonksiyona birden aramaları önlemek için yürütme tutacak bir AJAX arama yapmak için bir yolu var mı?

Cheers, Gazler.

4 Cevap

Toplu sonuçlarınız. Yükleme arasında bir seferde tek bir e-posta yükleme vs tüm e-postalar, toplu e-posta başlıkları olabilir ve geri gönderin. Eğer yanıt verme ve içerik arasında iyi bir uyum bulmak kadar bu sayıyı Tweak.

PHP komut dosyası gibi bu durumda bir aralığı isteği alacak

emailHeaders.php?start=25&end=50

Tüm verileri yüklendiğinde kadar javascript topakları devlet ve talep verileri korumak olacaktır. Yoksa bazı fantezi tür veri istemek için zaman istemci tarafında politikalar oluşturmak gibi şeyler ve istek ne veri yapabilirdi.

Çoğu tarayıcılar sadece herhangi bir zamanda 2 giden bağlantılara izin gibi tarayıcı başka bir darboğaz.

Eğer ("kuyruklu yıldız" veya "ters AJAX" için Google / Vikipedi bakmak) esas olarak "AJAX ters" için izin vermek için sunucu ve Javascript yapılandırmak için izin orada teknolojiler vardır. Ancak, bu muhtemelen kurma gider işin tüm değmez, inanılmaz derecede basit ve ne yaptığınızı için değil.

Eğer AJAX istekleri bir dizi kapalı ateş ediyoruz ve her gerçekçi sadece bir tanesi bir kez yapmak ve o zaman iyi olurdu ihtiyacı biraz iş yapmanız gereken aslında çok yaygın bir sorun var gibi geliyor.

Ben PHP işe yaramaz, ama dönüş imap_open değerini veya ne olursa olsun yan etkileri istekleri karşısında olan devam etmek mümkün ise, o zaman bunu denemelisiniz ve sonra sadece o kurtardı kaynağı yeniden.

Bazı pseudocode:

if (!persisted_resource) {
    persisted_resource = imap_open()
}

persisted_resource.use()....

persisted_resource bazı oturum kapsamı depolanan değişken, uygulama kapsamı veya ne olursa olsun PHP bu artık bir istek daha yaşadı kullanabildiği olması gereken yerde.

Sonra her isteği bu nedenle sadece tek bir isteği imap_open aramak için ya da sayfa yüklenirken yaparken bunu ilklendireceğiniz olacak bu değişkeni kontrol var ya. Umarım yararlı olur.

Her çağrısı ile alınmış gibi birçok e-postaları işleme gerek sanki geliyor. Bu noktada, birlikte hepsi için veri döndürebilir ve istemci tarafında dışarı ayrıştırmak. Ancak, bu süreç sonsuza kadar devam edemez, ve http isteği yanıt sonra sunucu ilave veri dönüşünü başlatmak değil, böylece daha sonra daha fazla e-postaları işlemi sonraki aramaları yapmak zorunda kalacaktır.

Sunucu tarafı komut dosyası PHP kısa sürede onun ürettiği olarak çıktı göndermek için yapılandırılabilir. Bu temelde bu tür output_buffering, output_handler, HTTP sıkıştırma, ara vekilleri olarak, tamponlama neden olabilecek tüm işlevini devre dışı bırakmak gerekiyor ...

Zor kısmı sizin JavaScript kütüphanesi kısmi girişini işlemek mümkün olduğunu gerekiyordu olmasıdır. Şöyle ki: Eğer kısa sürede Alındıktan olarak indirilen veri erişimi olması gerekir. Ben technically possible inanıyorum ama transferi tamamlandığında jQuery gibi bazı popüler kütüphaneler sadece veri okumak için izin verir.