Một máy chủ có thể xử lý các lệnh shell đồng thời?


11

Tôi đang viết một trình phát MP3 dựa trên trình duyệt rất đơn giản bằng PHP . Một phần của dự án này yêu cầu mọi tệp MP3 được chuyển đổi thành tệp WAV . Có một hàm trong PHP được gọi là shell_execcho phép bạn thực thi một lệnh thông qua trình bao. Đối với dự án của tôi, bất cứ khi nào ai đó tải bài hát lên tài khoản của họ, lệnh sau sẽ được thực thi:

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

Vì vậy, giả sử có 10 người khác nhau hoàn thành việc tải lên một bài hát cùng một lúc. Máy chủ Linux có thực hiện đồng thời 10 lệnh shell hay không hoặc chỉ thực hiện một lệnh một lần?

Nếu một máy chủ có thể xử lý đồng thời nhiều lệnh shell, thì máy chủ có thể xử lý chuyển đổi 10 bài hát khác nhau cùng một lúc hay nó chỉ thực hiện một lần một lần?


Làm thế nào điều này có liên quan đến Ubuntu? Nó không thuộc về serverfault hay unix?
bitmask

5
Hãy cẩn thận với việc chấp nhận tên tệp đầu vào từ người dùng. Ai đó có thể đặc biệt tạo một tên tệp bắt chước một số lệnh và bạn sẽ thực thi và về cơ bản bạn sẽ bị hack.
Rory

Câu trả lời:


13

Nếu bạn đang thực hiện thông qua PHP (hoặc bất kỳ ngôn ngữ nào khác có quyền truy cập vào các lệnh shell), chúng sẽ được thực hiện riêng rẽ, điều đó có nghĩa là chúng sẽ được thực hiện đồng thời nếu 10 người dùng sử dụng tập lệnh PHP cùng một lúc. Mỗi cuộc gọi PHP shell_execsẽ được thực hiện độc lập với các cuộc gọi khác. Bản thân tôi có một shell_exectập lệnh hiển thị một số thông tin cho người dùng của tôi cho một số hình ảnh nhất định và điều này được thực hiện độc lập với các tập lệnh thực thi PHP khác thông qua shell_exec.

Có giới hạn đối với số lượng người dùng đồng thời PHP có thể xử lý, nhưng nó phụ thuộc vào máy chủ web, tệp cấu hình PHP và MySQL của bạn nếu bạn đang sử dụng nó. Tôi biết con số lớn hơn 100 cùng một lúc.

Khi sử dụng các lệnh chuyên sâu về CPU, ví dụ như chuyển đổi video, việc sử dụng hiệu quả các lệnh sau đó sẽ phụ thuộc vào mức độ RAM bạn có và lượng CPU bạn có. Đối với ai đó có RAM 64 MB và 80486 , sẽ rất tệ khi cố gắng chuyển đổi hai video và 10 bài hát. Điều đó sẽ làm quá tải hệ thống. Đối với ai đó có máy chủ Core 2 Duo và RAM 4 GB, tôi nghĩ rằng việc chuyển đổi một số bài hát sẽ là một miếng bánh.

Về cơ bản, vâng, Linux có thể xử lý nhiều lệnh shell đồng thời, đặc biệt từ PHP, nhưng hiệu suất tổng thể sẽ phụ thuộc vào tài nguyên của máy chủ (CPU, RAM, ổ đĩa cứng, v.v.)


6

Nếu bạn muốn hỗ trợ một số lượng lớn người dùng, bạn sẽ phải điều tra một phương pháp khác để xử lý quá trình chuyển đổi.

Ví dụ: bạn có thể sẽ thiết lập một hệ thống lập lịch công việc để bạn gửi yêu cầu lên hệ thống để chuyển đổi một tệp và thăm dò hệ thống để biết trạng thái hoàn thành. Hệ thống lập lịch sẽ nhận các tác vụ từ hàng đợi và cho biết thực hiện tối đa bốn chuyển đổi tệp cùng một lúc.

Câu hỏi này có thể được quan tâm:

/programming//q/265073/175849


Một câu trả lời tuyệt vời khác, cảm ơn bạn steve-o
user784637
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.