サーバーは同時シェルコマンドを処理できますか?


11

私はPHPで非常にシンプルなブラウザベースのMP3プレーヤーを書いています。このプロジェクトの一部では、すべてのMP3ファイルをWAVファイルに変換する必要があります。PHPにshell_execはシェルを介してコマンドを実行できる関数があります。私のプロジェクトでは、誰かが自分のアカウントに曲をアップロードするたびに、次のコマンドが実行されます。

shell_exec('ffmpeg -i inputSong.mp3 outputSong.wav')

それで、正確に同じ時間に曲のアップロードを終了する10人の異なる人がいるとしましょう。Linuxサーバーは10個のシェルコマンドを同時に実行しますか、それとも一度に1つだけ実行しますか?

サーバーが複数のシェルコマンドを同時に処理できる場合、サーバーは同時に10の異なる曲の変換を処理できますか?


このubuntuはどのように関係していますか?それはserverfaultまたはunixに属していませんか?
ビットマスク

5
ユーザーからの入力ファイル名の受け入れには十分注意してください。誰かが何らかのコマンドを模倣するファイル名を特別に作成し、それを実行すると、本質的にハッキングされる可能性があります。
ロリー

回答:


13

PHP(またはシェルコマンドにアクセスできる他の言語)を介して実行する場合、それらは個別に実行されます。つまり、偶然10人のユーザーが同時にPHPスクリプトを使用する場合、それらは同時に実行されます。各PHPコールスルーshell_execは、他から独立して行われます。私自身は、shell_exec特定の画像についてユーザーに情報を表示するスクリプトを持っています。これは、他のPHPが実行したスクリプトとは独立して行われshell_execます。

PHPが処理できる同時ユーザーの数には制限がありますが、Webサーバー、PHP構成ファイル、および使用しているMySQLによって異なります。同時に100を超える数を知っています。

CPUを集中的に使用するコマンド(ビデオの変換など)を使用する場合、コマンドの効果的な使用は、RAMの量とCPUの能力に依存します。64 MBのRAMと80486を持っている人にとっては、2つのビデオと10曲を変換しようとすると悪くなります。それはシステムに過負荷をかけます。Core 2 Duoサーバーと4 GB RAMを持っている人にとっては、いくつかの曲を変換するのは簡単だと思います。

基本的に、はい、Linuxは特にPHPからの複数のシェルコマンドを同時に処理できますが、全体的なパフォーマンスはサーバーのリソース(CPU、RAM、ハードディスクドライブなど)に依存します


6

多数のユーザーをサポートする場合は、変換プロセスを処理する代替方法を調査する必要があります。

たとえば、ファイルを変換し、完了ステータスについてシステムをポーリングする要求をシステムに送信するように、ジョブスケジューリングシステムをセットアップする可能性があります。スケジューリングシステムは、キューからタスクを取得し、一度に最大4つのファイル変換を実行します。

この質問は興味深いかもしれません:

/programming//q/265073/175849


もう一つの素晴らしい答え、ありがとうございましたsteve-o
user784637
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.