質問: PHPでFFmpegが内部サーバエラーを引き起こす 私はffmpegを使用してビデオファイルを変換するexec()を呼び出すPHPスクリプトを持っています。このスクリプトは小さなファイルでは正常に動作しますが、通常は約20MBの大きなファイルでは、変換が約45秒間実行された後に500内部サーバーエラーが発生します。 max_execution_timeは600秒(10分)に設定され、ポストおよびアップロードの最大サイズは1000 MBに設定されています。サーバーはUnixベースであり、セーフモードで実行されていません。 この問題は大きなサイズでのみ発生しますが、ファイルサイズの問題であるかどうかはわかりません。スクリプトは12.6MBのMOVファイルを渡しますが、11MBのMP4ファイルで失敗します。 以下は私のスクリプトのexec()行です: ``` 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); ``` ありがとう!
回答: mod_fcgidとApacheを使用して、PHPとタイムアウトに関する同様の問題を経験しました。 mod_fcgidには長い時間がかかるスクリプトの問題があるようですが、タイムアウト値を変更しても、それでも時間の都合が良いとは言えません。 私はこれを解決するために見つけたいくつかのオプション: 1. PHPスクリプトを使用しない - PHP CLIとcronジョブを使用する 2. エンコードに使用しているサイトでmod_fcgidを使用しないでください。CGIを使用してください ラッパーまたはmod_php 私は私の問題を解決したリンクの非常に有用なセットを見つけたので、これを編集しています: 追加した: ``` AddHandler fcgid-script fcg fcgi fpl IdleScanInterval 10800 BusyScanInterval 10800 ZombieScanInterval 60 ``` 私のfcgid.confファイルに ``` IPCConnectTimeout 10800 IdleTimeout 10800 ProcessLifeTime 10800 BusyTimeout 10800 ``` into my httpd.conf in the relevant , restarted apache and the timeouts have stopped.