Başka bir php sayfa arka planı olarak php dosyasını çalıştırmak için arka plan işlemi başlatılıyor

3 Cevap

Ben başka bir php sayfa arka plan işlemi olarak bir php sayfası başlatmak istiyorum.

3 Cevap

Kullan popen():

$command = 'php somefile.php';
pclose(popen($command,'r'));

Bir arka plan işlemi olarak bu tanıtımları somefile.php.

Bu benim host (yürütme süresi 15 dakika ile sınırlı cronjobs kim, bu yüzden benim yedekleme komut her zaman aşımı olurdu) tarafından uygulanan kısıtlamalar etrafında almak için kullanılan bir tekniktir.

exec( 'php somefile.php | /dev/null &' );

Bu hattın gibidir:

  • exec() - PHP reference belirli bir komutu çalıştırır, Linux komut satırından sanki.
  • php somefile.php: açmak ve çalıştırmak için PHP çağırır somefile.php. Bu, o dosya bir web tarayıcısı üzerinden erişilen olsaydı ne olurdu gibi aynı davranıştır.
  • | ("boru") - belirli bir hedefi işlem komutunun çıktısını gönderir. Bu durumda, o "boru" normal dosya erişen web tarayıcısı tarafından okunacak içeriği olur.
  • /dev/null - Bir karadelik. Hayır, şaka değil. Bu sadece onu yok etmek istiyorsanız çıktı göndermek bir yerdir.
  • & - Bir Linux komut sonuna kadar bu karakter ekleme "beklemeyin. - Background gönder ve devam et" anlamına gelir

Yani, özetle, sağlanan kod, bir PHP komut dosyası çalıştırmak hiçbir geri çıkışı, ve bir sonraki satıra devam etmeden önce bitirmek için beklemek olmaz.

(And, as always, if any of these assumptions on my part are in error, I would love to be corrected by more knowledgeable members of the community.)

Siz sayfanın işlem bittiğinde arka plan işlemi sona olmadığından emin olmak gerekir. Eğer bir Linux sistemi üzerinde iseniz, nohup komutunu kullanmayı deneyebilirsiniz:

$command = 'nohup php somefile.php';
pclose(popen($command,'r'));

Hala sona alırsa, "cin" komutunu deneyebilirsiniz.