Bir dosyaya php sistemi komutu çıkış dökümü

4 Cevap php

Php sistemi komutu biz şu kullanın

system("ffmpeg -i test.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv output_file.flv 2>&1 &").

Yukarıda belirtilen sistem komutu kullanımını açıklayınız. Ne yapar '2> & 1 & ' için durmak? Ben bir dosya bunu nasıl yapabilirim için işlem ayrıntılarını dökümünü istiyor?

Çok teşekkür ederim.

4 Cevap

Sonunda 2>&1 yönlendirmeleri «stderr » to «stdout» , & background komut çalıştırma sağlar.

Olması gerektiği bütünlestirebilmek

«command» 2>&1 > /tmp/somefile.log &

«stdout» bir dosyaya (ya da yönlendirme olmadan komut kısa sürede PHP sonlandırır olarak öldürtmek gibi /dev/null ) running in background from system() (çok mantıklı değil örneğin zaman sınıra ulaşmadan).

system() manuel:

Note: If a program is started with this function, in order for it to continue running in the background, the output of the program must be redirected to a file or another output stream. Failing to do so will cause PHP to hang until the execution of the program ends.

2> & 1 Standart Hata yönlendirir (2) Standart Çıkış log (1).

Ne ekstra emin değil & sonunda yapar.

Eğer bir dosyaya boru stderr'e veya stdout istiyorsanız, kolayca yapabilirsiniz.

Boru stderr'e bir dosyaya, değişiklik 2> & 1> filepath 2

Filepath tercihen mutlak filepath (: 2> / home / user / output.mpg ex) olduğu

Stdout ve stderr: Her UNIX programı iki çıkış akışları vardır. Yönlendirme amaçlı,> sembolü bir dosyaya stdout (dosya tanıtıcı 1) yönlendirir. "2>" (stdout olan) dosya tanıtıcı 1 kullanımı kabuk söyler "ve 1" bu durumda temsil dosyaya stderr'yi (dosya tanıtıcı 2) yönlendirir. Bir php bağlamda bu iki akışları artık şüphe anladım script çıktı, basılmış olacak demektir.

& komutun sonunda arka planda işi çalıştırmak için kabuk söyler. Bu ortamda bunu yapmak isterim neden bilmiyorum.

Eğer PHP ile bir dosyaya yazmak istiyorsanız, siz de [exec()][1] kullanabilir veya [passthru()][2] ki var seçenekler komut tüm içeriği dönün. system() sadece son satırı dönecektir.