PHP ile FFmpeg İç Sunucu Hatası neden olur

Ben ffmpeg kullanarak video dosyalarını dönüştürmek için exec() çağırır bir PHP betiği var. Komut dosyası daha küçük dosyalarla iyi çalışır, ancak genellikle 20MB civarında olan daha büyük dosyalar, dönüşüm 45 saniye boyunca çalıştırıldıktan sonra 500 Dahili Sunucu Hatası üretir.

Max_execution_time, 600 saniyeye (10 dakika) ayarlandı ve maksimum gönderi ve yükleme boyutları 1000 MB olarak ayarlandı. Sunucu Unix tabanlı ve güvenli modda çalışmıyor.

Sorun yalnızca daha büyük boyutlarda olsa da, bir dosya boyutu sorunu olduğundan bile emin değilim. Komut dosyası 12.6MB'lık bir MOV dosyası ile geçecek ancak 11MB'lık bir MP4 dosyasıyla başarısız olacak.

Scriptimden exec() satırı aşağıdadır:

exec('ffmpeg -y -i '.escapeshellarg($uploadFile).' -vcodec libx264 -ab 128k -ac 2 -b 640k -g 300 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -maxrate 10M -bufsize 10M -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 '.$convertFile);

Teşekkürler!

1
Uzun süren iş, arka plan üzerinde çalışıyor olmalıdır. Eski ffmpeg'in hataları var, en son sürümü çalıştırdığınızdan emin olun. PHP olmadan aynı komutu terminalde çalıştırmayı deneyin.
katma yazar Petr, kaynak
Terminalde iyi çalışıyor. Dönüştürme, iç hata atıldığında bile çalışır; exec() 'den sonraki satırlardan hiçbirini çağırmaz. Hata atıldıktan sonra FTP'yi kontrol edebilirim ve dizinde çalışan bir video dosyası olacak.
katma yazar Scott Heath, kaynak

1 cevap

Ben mod_fcgid ve Apache kullanarak PHP ve zaman aşımları ile benzer sorunlar yaşadım. mod_fcgid, uzun süre çalışan komut dosyaları ile ilgili bir sorun gibi görünüyor ve zaman aşımı değerlerini değiştirmenin miktarı ne olursa olsun, her zaman güzel oynamak için alamadım.

Bunu çözmek için bulduğum bazı seçenekler:

  1. PHP betiğini kullanmayın - PHP CLI ve cron job kullanın
  2. Kodlamak için kullandığınız siteye mod_fcgid kullanmayın, CGI kullanın sarıcı veya hatta mod_php

Sorunumu çözdüğüm çok faydalı bağlantılar bulduğum için bunu düzenliyorum:

http://profiles.ysn.com/supportforum/viewtopic.php?f=7&t=283&start=15#p1300

http://www.virtualmin.com/node/19879

Ekledim:


    AddHandler fcgid-script fcg fcgi fpl
    IdleScanInterval 10800
    BusyScanInterval 10800
    ZombieScanInterval 60

fcgid.conf dosyasına ve

IPCConnectTimeout 10800
IdleTimeout 10800
ProcessLifeTime 10800
BusyTimeout 10800

into my httpd.conf in the relevant , restarted apache and the timeouts have stopped.

1
katma