Nasıl "çatal" için

3 Cevap php

Ben, bir toplu flaş yükleme komut dosyası var bir dir yüklenenler video dosyalarını. Basit. Yükleme tamamlandıktan sonra, o dosya için bir mysql kaydı oluşturur, ve kuyruktaki bir sonraki dosyaya geçer.

Ben bir ipod uyumlu mp4 dosyasına yüklenen avi avi dosyasını dönüştürmek yanı sıra bazı önizleme Yaşasın üretecek bir arka plan işlemi çağırmak istiyorum, bunu yapmaz hemen önce. Tahmin edebileceğiniz gibi, bu biraz zaman alır ...... ben sadece dosya uploader'inde dönüşüm kodu koyabilirsiniz ... ama (bir nono olan, iyi bir 10-20 dakika boyunca her dosya için asmak bile sen onun bir yönetici-tek işlevi).

Dosyayı dönüştürür ederken Yani ben bu arka planda dönüştürme işlemini çatal, ve bir sonraki yükleme üzerine taşımak istiyorum.

Böyle bir şey aslında php çatal işlevleri kullanmak zorunda olacak iş mi, yoksa misiniz?

exec("/usr/bin/php ./convert.php?id=123 > /dev/null 2>&1 &");

3 Cevap

Exec php kılavuz sayfası () diyor ki:

If a program is started with this function, in order for it to continue running in the background, the output of the program must be redirected to a file or another output stream. Failing to do so will cause PHP to hang until the execution of the program ends.

Yani, evet, senin exec çağrı hile yapacak.

Bu mimari uygulamak için en iyi yolu PHP ön uç dönüştürmek için arka uç dosyaları daemon besleme ile, bir iş sırası olduğunu. Işinizi PHP ayrıştırarak, ve UI daima duyarlı kalır.

Ben uzun bir süre PHP yazılmış, ama it's my understanding that any process started falls under the maximum timeout rule, ve Web sunucusu altında çalıştırılır değil. Siz bu durumda olmak istemiyorum; kesinlikle ek işlemler başlayan yetenekli bir Web isteği istemiyorum.

Web sunucusu dışında çalışan ve yüklenen dosyalar için bir klasör izler basit bir cini yazın. Web ön uç onları orada döker, ve cini kadar kaç tane çekirdek için her dönüşüm için bir konu kapalı çoğaltılır. Mimari, bu akıllıca bir seçimdir.

Ayrıca ilgili olan, aynı zamanda this question benim cevaba bakınız.

Bu hile yapacak ama bir yönetilemez bir fikir gibi görünüyor. Sadece başlatmak ve asla geri bakmak için gidiyoruz eğer, işler gerçekten hızlı ters gidebilir.

Nasıl sadece birkaç dakikada ve oylama kuyrukta hala bir şey çalışan bir komut dosyası zamanlama konusunda. Eğer cron erişimi var mı?