Bisakah server menangani perintah shell secara simultan?

11

Saya sedang menulis pemutar MP3 berbasis browser yang sangat sederhana dalam PHP . Bagian dari proyek ini mensyaratkan bahwa setiap file MP3 dikonversi ke file WAV . Ada fungsi dalam PHP yang disebut shell_execyang memungkinkan Anda untuk menjalankan perintah melalui shell. Untuk proyek saya, setiap kali seseorang mengunggah lagu ke akun mereka, perintah berikut akan dijalankan:

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

Jadi misalkan ada 10 orang berbeda yang selesai mengunggah lagu pada waktu yang bersamaan. Apakah server Linux menjalankan 10 perintah shell secara bersamaan atau apakah itu hanya dilakukan satu per satu?

Jika server dapat menangani beberapa perintah shell secara bersamaan, apakah server dapat menangani konversi 10 lagu yang berbeda pada saat yang sama atau apakah itu hanya dilakukan satu per satu?

pengguna784637
sumber
Bagaimana hubungan ubuntu ini? Bukankah itu milik serverfault atau unix?
bitmask
5
Berhati-hatilah dengan menerima nama file input dari pengguna. Seseorang mungkin secara khusus membuat nama file yang meniru beberapa perintah, dan bahwa Anda akan mengeksekusi, dan Anda pada dasarnya akan diretas.
Rory

Jawaban:

13

Jika Anda melakukannya melalui PHP (atau bahasa lain yang memiliki akses ke perintah shell) mereka akan dilakukan secara terpisah, yang berarti bahwa mereka akan dilakukan secara simultan jika kebetulan 10 pengguna menggunakan skrip PHP pada saat yang sama. Setiap panggilan PHP melalui shell_execakan dilakukan terlepas dari yang lain. Saya sendiri memiliki shell_execskrip yang menampilkan beberapa informasi kepada pengguna saya untuk gambar tertentu dan ini dilakukan secara independen dari skrip yang dieksekusi PHP lainnya shell_exec.

Ada batasan untuk berapa banyak pengguna simultan PHP dapat menangani, tetapi itu tergantung pada server web Anda, file konfigurasi PHP dan MySQL jika Anda menggunakannya. Saya tahu jumlahnya lebih besar dari 100 pada saat yang sama.

Saat menggunakan perintah intensif CPU, misalnya mengonversi video, penggunaan perintah yang efektif akan tergantung pada berapa banyak RAM yang Anda miliki dan berapa banyak daya CPU yang Anda miliki. Untuk seseorang dengan 64 MB RAM dan 80486 akan menjadi buruk untuk mencoba mengkonversi dua video dan 10 lagu. Itu akan membebani sistem. Untuk seseorang dengan server Core 2 Duo dan 4 GB RAM saya pikir mengonversi beberapa lagu akan menjadi hal yang mudah.

Jadi pada dasarnya, ya, Linux dapat menangani beberapa perintah shell simultan, khususnya dari PHP, tetapi kinerja keseluruhan akan tergantung pada sumber daya server (CPU, RAM, hard disk drive, dll.)

Luis Alvarado
sumber
6

Jika Anda mendukung sejumlah besar pengguna, Anda harus menyelidiki metode alternatif untuk menangani proses konversi.

Sebagai contoh, Anda mungkin akan mengatur sistem penjadwalan pekerjaan sehingga Anda memposting permintaan ke sistem untuk mengkonversi file dan polling sistem untuk status penyelesaian. Sistem penjadwalan akan mengambil tugas dari antrian dan mengatakan melakukan hingga empat konversi file sekaligus.

Pertanyaan ini mungkin menarik:

/programming//q/265073/175849

Steve-o
sumber
Jawaban hebat lainnya, terima kasih steve-o
user784637