Görevi tamamlamak için bir işlev beklemeden kodlama kalanı ile devam dnm.php yapmak NASIL?

3 Cevap php

Bu böyledir. Test.php de, bir işlev doTask (a, b, c, d) vardır;

This function need to do task that need 2-4 minutes to complete. Task including insert new record into db, curl call to other url to do task and etc.

However, I want test.php to: Just make sure dotask(a,b,c,d) is called, no need to wait until task completed then only return and continue with the remaining code at bottom.

Sebep: dnm.php size sayfa bir teşekkür olduğunu. Ben görevin tamamlanması için kullanıcı birkaç dakika bekleyin bekliyoruz olamaz. Ben göstermek gerekir, çünkü kullanıcı o sayfaya vb size mesaj ederim.

Ben ne yapabilirim?

3 Cevap

Sen hackery bir sürü olmadan PHP bir süreç çatal olamaz. Ben bunun yerine bir kuyruk ve işçi desen kullanmanızı tavsiye ediyorum. Bu cevaba bakınız: http://stackoverflow.com/questions/984577/php-need-a-cron-for-back-site-processing-on-user-signup-or-fork-process/984592#984592

burada burada birkaç farklı çözümler, bakabilirsiniz başka bir şeydir.

http://stackoverflow.com/questions/1019867/php-shell-execute-without-waiting-for-a-return

I seen a few solutions here that require you to pass in the page that you want to run, eg: BackgroundProcess::fork('process_user.php');

But my case is at test.php, I have dotask(a,b,c,d) I need to pass in parameters from this site to continue the work.

Ben sadece process_user.php, ben veritabanından okuma ve yerine görevi, sonra devam yeni DBTable çağrı pendingprocess içine bu birkaç parametre geçmesi gerekir?

Ben taskpage.php sağ içine parametre embed edemez ...

Another solution I can think of is at thankyou.php I do a body onload ajax call by passing in parameter to process_user.php to perform task. Anyone can advice whether this is a good way? Will the process stop executing when user click STOP at browser? What if they go to refresh the browser.