Engelleme olmadan PHP-komut bir PHP-komut dosyasını çalıştırın

2 Cevap php

Onları madencilik çeşitli siteleri ve veri hareket edecek bir örümcek inşa ediyorum.

Since I need to get each page separately this could take a VERY long time (maybe 100 pages). I've already set the set_time_limit to be 2 minutes per page but it seems like apache will kill the script after 5 minutes no matter.

Bu cron veya bu zaman sınırı yoktur benzer bir şey çalışacaktır çünkü bu genellikle bir sorun değildir. Ancak ben de yöneticileri bir HTTP arayüzü üzerinden alıp elle başlatmak mümkün olmak istiyorum.

O, ben, apache tam süresi boyunca canlı tutulması önemli değil tetiklemek için AJAX kullanmak için gidiyoruz bir almak ve AJAX ile bir arada tekrar kontrol edin.

Benim sorunum başlamak için nasıl komut ölür çağrılırken getir sona olmadan bir PHP-komut dosyası içinde getir.

Maybe I could use system('script.php &') but I'm not sure it will do the trick. Any other ideas?

2 Cevap

    $cmd = "php myscript.php $params > /dev/null 2>/dev/null &";

    # when we call this particular command, the rest of the script 
    # will keep executing, not waiting for a response
    shell_exec($cmd);

Bu ne tüm STDOUT'a ve STDERR için / dev / null gönderir olduğunu ve komut yürütme tutar. 'Ana' yazısı myscript.php önce bitse dahi, myscript.php yürütme bitecek.

Eğer exec kullanmak istemiyorsanız eğer işlevi yerleşik bir php kullanabilirsiniz!

ignore_user_abort(true);

Bu tarayıcı ve sunucu arasındaki bağlantı kesildiğinde bile devam etmek için komut anlatacağım ;)