• User Newbie

    [PHP e FFMPEG] Processi in background

    Salve a tutti,

    non so se posto nella sezione giusta, in caso contrario i moderatori spostino pure.

    Devo creare uno script PHP che converta un file video precedentemente caricato sul server e lo converta in 3 formato diversi.
    Ad esempio ho ```
    miovideo.avi

    miovideo.mp4
    miovideo.ogv
    miovideo.webm

    
    Per fare ciò ho utilizzato **FFMPEG **con tre comandi differenti:
    
    [PHP]
    exec(ffmpeg -i miovideo.avi miovideo.mp4);
    exec(ffmpeg -i miovideo.avi miovideo.ogv);
    exec(ffmpeg -i miovideo.avi miovideo.webm);
    [/PHP]
    
    Il problema è che PHP non passa alla seconda istruzione finché la prima non è completata; quindi se l'utente chiude il browser mentre è in corso la prima conversione le altre due non verranno portate a termine.
    
    Come posso ovviare?
    Posso fare in modo che vengano messe in "lista d'attesa" sul server e eseguite anche se l'utente ha chiuso il browser?
    
    Spero di essere stato chiaro

  • User Attivo

    IMHO se l'utente chiudesse il browser c'è poco da fare se non è stato autenticato, e quindi il risultato potrebbe essere memorizzato in una sua area riservata, ma la vedo dura.

    Una cosa che si vede in certi siti è l'avanzamento (barra) del processo, probabilmente per disincentivare l'utente ad andarsene. Una cosa che a occhio potrebbe essere veloce da fare è quella di cambiare e mostrare lo stato tra una exec e l'altra.

    Tempo fa avevo fatto delle ricerche ed avevo trovato che con le ultime versioni di PHP è disponibile la programmazione parallela (quindi è meno sequenziale come anche tu scrivi, però metterà molto più sotto pressione il server), ma sfortunatamente è un argomento che non ho avuto modo di sviluppare.