เซิร์ฟเวอร์สามารถจัดการคำสั่งเชลล์พร้อมกันได้หรือไม่?


11

ฉันเขียนเบราว์เซอร์ที่ง่ายมากMP3เล่นในPHP ส่วนหนึ่งของโครงการนี้กำหนดให้ไฟล์ MP3 ทุกไฟล์ถูกแปลงเป็นไฟล์WAV มีฟังก์ชั่นใน PHP ที่เรียกshell_execว่าช่วยให้คุณสามารถรันคำสั่งผ่านเชลล์ได้ สำหรับโครงการของฉันทุกครั้งที่มีคนอัปโหลดเพลงไปยังบัญชีของพวกเขาคำสั่งต่อไปนี้จะถูกดำเนินการ:

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

สมมติว่ามี 10 คนที่แตกต่างกันที่เสร็จสิ้นการอัปโหลดเพลงในเวลาเดียวกัน เซิร์ฟเวอร์ Linux รันคำสั่ง 10 เชลล์พร้อมกันหรือไม่ทำทีละครั้ง?

หากเซิร์ฟเวอร์สามารถจัดการคำสั่งเชลล์หลาย ๆ ตัวพร้อมกันเซิร์ฟเวอร์จะสามารถจัดการการแปลง 10 เพลงที่แตกต่างกันในเวลาเดียวกันหรือทำทีละครั้ง?


Ubuntu นี้มีความเกี่ยวข้องกันอย่างไร มันไม่ได้อยู่ใน serverfault หรือ unix หรือไม่?
bitmask

5
ใช้ความระมัดระวังในการยอมรับชื่อไฟล์อินพุตจากผู้ใช้ บางคนอาจสร้างชื่อไฟล์เป็นพิเศษซึ่งเลียนแบบคำสั่งบางอย่างและคุณต้องทำงานและคุณจะถูกแฮ็คเป็นหลัก
โรรี่

คำตอบ:


13

หากคุณทำผ่าน PHP (หรือภาษาอื่น ๆ ที่มีการเข้าถึงคำสั่งเชลล์) พวกเขาจะทำแยกต่างหากซึ่งหมายความว่าพวกเขาจะทำพร้อมกันหากผู้ใช้ 10 คนใช้สคริปต์ PHP ในเวลาเดียวกัน การเรียกใช้ PHP แต่ละครั้งshell_execจะดำเนินการโดยอิสระ ตัวผมเองมีshell_execสคริปต์ซึ่งแสดงให้เห็นข้อมูลบางอย่างให้กับผู้ใช้ของฉันสำหรับบางภาพและนี้จะกระทำเป็นอิสระจาก PHP สคริปต์ดำเนินการอื่น ๆ shell_execผ่านทาง

มีการ จำกัด จำนวนผู้ใช้พร้อมกันที่ PHP สามารถจัดการได้ แต่ขึ้นอยู่กับเว็บเซิร์ฟเวอร์ไฟล์กำหนดค่า PHP และ MySQL หากคุณใช้งาน ฉันรู้ว่าจำนวนมากกว่า 100 ในเวลาเดียวกัน

เมื่อใช้คำสั่ง CPU แบบเข้มข้นเช่นการแปลงวิดีโอการใช้คำสั่งอย่างมีประสิทธิภาพจะขึ้นอยู่กับจำนวน RAM ที่คุณมีและพลังงาน CPU ที่คุณมี สำหรับคนที่มี RAM 64 MB และ80486มันจะไม่ดีถ้าลองแปลงวิดีโอสองเพลงและ 10 เพลง นั่นจะทำให้ระบบโอเวอร์โหลด สำหรับคนที่มีเซิร์ฟเวอร์ Core 2 Duo และ RAM ขนาด 4 GB ฉันคิดว่าการแปลงเพลงหลาย ๆ เพลงน่าจะเป็นเรื่องที่น่าสนใจ

โดยพื้นฐานแล้วใช่แล้ว Linux สามารถจัดการคำสั่งเชลล์หลาย ๆ ตัวพร้อมกันโดยเฉพาะจาก PHP แต่ประสิทธิภาพโดยรวมนั้นขึ้นอยู่กับทรัพยากรของเซิร์ฟเวอร์ (CPU, RAM, ฮาร์ดดิสก์ไดรฟ์ ฯลฯ )


6

หากคุณต้องสนับสนุนผู้ใช้จำนวนมากคุณจะต้องตรวจสอบวิธีการอื่นในการจัดการกระบวนการแปลง

ตัวอย่างเช่นคุณอาจจะตั้งค่าระบบการจัดตารางเวลางานเช่นที่คุณโพสต์คำขอไปยังระบบเพื่อแปลงไฟล์และสำรวจความคิดเห็นของระบบสำหรับสถานะเสร็จสมบูรณ์ ระบบการจัดตารางเวลาจะทำงานจากคิวและบอกว่าทำการแปลงไฟล์ได้สูงสุดสี่ครั้ง

คำถามนี้อาจเป็นที่สนใจ:

/programming//q/265073/175849


คำตอบที่ยอดเยี่ยมอีกข้อหนึ่งขอบคุณ steve-o
user784637
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.