私は MPPHP のプレーヤーベースの非常にシンプルなブラウザを書いています。このプロジェクトの一部では、すべてのMP3ファイルを WAV ファイルに変換する必要があります。 PHPにはShell_exec
という関数があり、シェルを介してコマンドを実行できます。私のプロジェクトでは、誰かが自分のアカウントに曲をアップロードするたびに、次のコマンドが実行されます。
Shell_exec('ffmpeg -i inputSong.mp3 outputSong.wav')
だから、同じ時間に曲をアップロードするfinishが10人いるとしましょう。 Linuxサーバーは10個のシェルコマンドを同時に実行しますか、それとも一度に1つだけ実行しますか?
サーバーが複数のシェルコマンドを同時に処理できる場合、サーバーは同時に10の異なる曲の変換を処理できますか?
PHP(またはシェルコマンドにアクセスできる他の言語)を介して実行する場合、それらは個別に実行されます。つまり、10人のユーザーがPHPスクリプト。 PHPを介した各Shell_exec
呼び出しは、他から独立して行われます。私自身は、特定の画像についてユーザーに情報を表示するShell_exec
スクリプトを持っています。これは、Shell_exec
を介して実行される他のPHPスクリプトから独立して行われます。
PHPが同時に処理できるユーザーの数には制限がありますが、使用している場合は、Webサーバー、PHP構成ファイル、およびMySQLに依存します。同時に100を超える数を知っています。
CPUを集中的に使用するコマンド(ビデオの変換など)を使用する場合、コマンドの効果的な使用方法は、RAMの量とCPUの能力に依存します。 64 MB RAMと 80486 を持っている人にとっては、2つのビデオと10曲を変換しようとすると悪くなります。それはシステムに過負荷をかけます。 Core 2 Duoサーバーと4GBのRAMをお持ちの場合、いくつかの曲を変換するのは簡単だと思います。
基本的に、はい、Linuxは特にPHPからの複数のシェルコマンドを同時に処理できますが、全体的なパフォーマンスはサーバーのリソース(CPU、RAM、ハードディスクドライブなど)に依存します
多数のユーザーをサポートする場合は、変換プロセスを処理する代替方法を調査する必要があります。
たとえば、ファイルを変換し、完了ステータスについてシステムをポーリングする要求をシステムに送信するように、ジョブスケジューリングシステムをセットアップします。スケジューリングシステムは、キューからタスクを取得し、一度に最大4つのファイル変換を実行します。
この質問は興味深いかもしれません: