Bir sunucu eşzamanlı kabuk komutlarını işleyebilir mi?


11

PHP'de çok basit bir tarayıcı tabanlı MP3 çalar yazıyorum . Bu projenin bir parçası, her MP3 dosyasının bir WAV dosyasına dönüştürülmesini gerektirir . PHP'de kabuk üzerinden bir komut çalıştırmanıza izin veren bir işlev var . Projem için, birisi hesabına her şarkı yüklediğinde, aşağıdaki komut yürütülür:shell_exec

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

Diyelim ki bir şarkıyı aynı anda yüklemeyi bitiren 10 farklı kişi var . Linux sunucusu aynı anda 10 kabuk komutu yürütüyor mu veya aynı anda yalnızca bir tane komut mu yapıyor?

Bir sunucu aynı anda birden fazla kabuk komutunu işleyebiliyorsa, sunucu aynı anda 10 farklı şarkıyı dönüştürmeyi başarabilecek mi yoksa aynı anda yalnızca bir tane şarkı mı yapabilir?


Bu ubuntu nasıl ilişkilidir? Sunucu hatası veya unix'e ait değil mi?
bitmask

5
Kullanıcıdan giriş dosya adını kabul ederken çok dikkatli olun. Birisi özel olarak bazı komutları taklit eden ve yürüteceğiniz ve esasen saldırıya uğrayan bir dosya adı oluşturabilir.
Rory

Yanıtlar:


13

PHP (veya kabuk komutlarına erişimi olan başka bir dil) üzerinden yapıyorsanız, bunlar ayrı olarak yapılacaktır, bu da 10 kullanıcının PHP komut dosyasını aynı anda kullanması durumunda eşzamanlı olarak yapılacakları anlamına gelir. Her bir PHP çağrısı shell_execdiğerlerinden bağımsız olarak yapılacaktır. Kendim shell_execbelirli görüntüler için kullanıcılarıma bazı bilgileri gösteren bir komut dosyası var ve bu üzerinden diğer PHP çalıştırılan komut dosyaları bağımsız yapılır shell_exec.

PHP'nin eşzamanlı olarak kaç kullanıcının işleyebileceğinin bir sınırı vardır, ancak kullanıyorsanız web sunucunuza, PHP yapılandırma dosyasına ve MySQL'e bağlıdır. Bu sayının aynı anda 100'den fazla olduğunu biliyorum.

CPU yoğunluklu komutları kullanırken, örneğin videoları dönüştürürken, komutların etkili kullanımı, ne kadar RAM'inize ve ne kadar CPU gücünüz olduğuna bağlı olacaktır. 64 MB RAM ve 80486 olan biri için iki video ve 10 şarkı dönüştürmeye çalışmak kötü gider. Bu, sistemi aşırı yükler. Bir Core 2 Duo sunucusu ve 4 GB RAM'e sahip biri için birkaç şarkıyı dönüştürmenin çok kolay olacağını düşünüyorum.

Temel olarak, evet, Linux özellikle PHP'den aynı anda birden çok kabuk komutunu işleyebilir, ancak genel performans sunucunun kaynaklarına (CPU, RAM, sabit disk sürücüsü, vb.) Bağlı olacaktır.


6

Çok sayıda kullanıcıyı destekleyecekseniz, dönüşüm sürecini ele almak için alternatif bir yöntemi araştırmanız gerekir.

Örneğin, bir dosyayı dönüştürmek ve sistemi tamamlanma durumu için yoklamak üzere sisteme istek gönderecek şekilde bir iş planlama sistemi kurmanız muhtemeldir. Zamanlama sistemi görevleri bir kuyruktan alır ve aynı anda en fazla dört dosya dönüşümü gerçekleştirdiğini söyler.

Bu soru ilginizi çekebilir:

https://stackoverflow.com/q/265073/175849


Başka bir harika yanıt, teşekkür ederim steve-o
user784637 29:11
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.