Şeklinde arka plan işlevi php çalışan gönderebilirsiniz

5 Cevap php

Ben bu sonucu bekliyor tarayıcı penceresini terk etmem göndermek formda bir fonksiyonu başlatmak için bir yol arıyorum.

Example: User fills in the form and press submit, the data from the form via javascript goes to the database and a function in php that will take several seconds will start but I dont want the user to be left waiting for the end of that function. I would like to be able to take him to another page and leave the function doing its thing server side.

Herhangi bir düşünce?

Teşekkürler


Teşekkürler for all the replies...

Ben ajax parçası var. Ama ajax aramak ve başka bir sayfaya tarayıcı hareket olamaz.

Bu ne istediğini.

-User fills form and submits -Result from the form passed to database -long annoying process function starts -user carries on visiting the rest of the site, independent of the status on the "long annoying process function"

Arada ve daha önce kimse bunu gösteriyor. Hayır, bu cron tarafından yapılamaz

5 Cevap

Php komut dosyası çağırmak için AJAX kullanın ve üzerinde komut dönüş üstündeki ignore_ user_ abort.

ignore_user_abort(true);

Onlar sayfasından gezinmek eğer bu şekilde komut artalanları çalışmaya devam edecektir. Da kullanabilirsiniz

set_time_limit(0);

Eğer komut tamamlamak için bir süre alacaktır bilmek yararlıdır bir zaman sınırı ayarlamak için.

En yaygın yöntem:

exec("$COMMAND > /dev/null 2>&1 &");

Ah, tamam, iyi aslında bu nedenle soruyorsun, PHP desteği diş yapar ve genel cevabı ancak ... hayır ...

Yukarıda vurgulanan ve sunucu üzerinde ayrı bir süreç için dışarı bölmek içeren bir tanesi bu davranışı taklit eden için gerçekleştirebileceğiniz bazı hileler vardır, bu yolları da dahil, bir dizi acheived olabilir;

exec()

yöntemi. Sen de burada bakmak isteyebilirsiniz;

PHP threading

Ben de insanlar geri istemciye yanıt zorlamak için çalışırken, yarım komut dosyası aracılığıyla çıkış tamponunun bir floş zorlamak denemek gördük, ben bu yaklaşımın ne kadar başarılı olduğunu bilmiyorum, ama belki başkası birinde bazı bilgilere sahip olacaktır.

Bu AJAX (asenkron JavaScript + XML için steno) için tam olarak ne olduğunu;

AJAX Information

Bu istemci tarafında kod kullanarak kodu, ve, sunucuya asenkron istekleri göndermek kullanıcının tarayıcı tüm bir sayfa isteği ile interuppted değildir böyle. Sağlar

Orada orada web üzerinde AJAX ile ilgili birçok bilgi, bu yüzden derin bir nefes almak ve Googling olsun!

(- Google Asynchronous JavaScript ve XML) sunmak zorunda özellikleri AJAX bazılarını kullanmak istiyorum gibi geliyor.

Temelde, içeriğe sahip bir sayfa olurdu. Kullanıcı bir düğmeye tıkladığında, javascript sunucusunda POST verileri ve işleme başlamak için kullanılacak. Aynı zamanda, javascript sunucudan bir sayfa yüklemek olabilir ve daha sonra görüntülemek (örneğin yük verileri, ve o yeni bir sayfa ile bir DIV içeriğini değiştirin.)

Bu kind şey, aynı anda birden çok şeyler yapan bir web sayfası olduğunda her yerde görmek AJAX arkasında öncül olduğunu.

Fazlalaştı: Bu komut çalışan anlamına gelmez "sunucusunda arka planda." Sizin web tarayıcısı hala web sunucusu ile bağlantı sürdürüyor - kodu client's tarafta "arka plan" çalışan anlamına gelir. Ve "arka plan" biz gerçekten "sürecini çalışan bir 'arka plan' hissi vermek için diğer HTTP istekleri ile paralel HTTP isteği işleme" demek