Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    eseguire video script in backround

    Salve,

    ho 2 campi di un modulo .........

    <form action="videoscript.php" method="post" enctype="multipart/form-data">
    <select name="id" id="id" >

    <option value="3">prova video</option>

    </select>


    <p align="center">Inserisci il video
    <input name="audio" type="file" />
    <input type="submit" name="button" id="button" value="Invia" />
    </p>
    </form>


    ........................... ora vorrei far sì che quando invio il modulo lo script videoscript.php lavori in background così da non dover aspettare la fine del processo di trasformazione di ffmpeg e quindi poter subito chiudere il browser


    ..... questo e il video script:

    videoscript.php :


    ini_set( "max_execution_time", "3600" ); // sets the maximum execution time of this script to 1 hour.
    $fileName = $_FILES['audio']['name']; // get client side file name


    if( $fileName ) {
    // Check File Type
    $fileNameParts = explode( ".", $fileName ); // seperate the name from the ext
    $fileExtension = end( $fileNameParts ); // part behind last dot
    $fileExtension = strtolower( $fileExtension ); // reduce to lower case

    if( !$fileExtension == "mpg" && !$fileExtension == "avi" && !$fileExtension == "mpeg" && !$fileExtension == "wmv" && !$fileExtension == "rm" && !$fileExtension == "dat" ) {
    die( "Invalid Video Format." );
    }
    // Check File Size
    $fileSize = $_FILES['audio']['size']; // size of uploaded file
    if( $fileSize == 0 ) {

    die( "Sorry. The upload of $fileName has failed. The file size is 0." );
    } else if( $fileSize > 1024000000 ) { //900 MB
    die( "Sorry. The file $fileName is larger than 900MB. Advice: reduce the file quality and upload again." );

    } else {
    $uploadDir = '/var/www/vhosts/miosito.it/httpdocs/new/video2/uploaded/'; // Where the temp file will go
    $uploadFile = str_replace( " ", "", $uploadDir . $_FILES['audio']['name'] ); // Get rid of spaces in the filename

    $finalDir = '/var/www/vhosts/miosito.it/httpdocs/new/video2/converted/'; // Where the final file will go
    $finalFile = str_replace( " ", "", $finalDir . $fileNameParts[0] . ".flv" ); // Get rid of spaces in the filename

    if ( !move_uploaded_file( $_FILES['audio']['tmp_name'], $uploadFile ) ) {
    echo "Possible file upload attack! Here's some debugging info:\n";
    echo( $_FILES );
    }


    $encode_cmd = "/usr/bin/ffmpeg -i $uploadFile -acodec mp3 -ar 22050 -ab 32 -f flv -author \"Clip Author\" -copyright \"Clip Copyright\" $finalFile";
    exec( $encode_cmd );

    echo $finalFile;
    chmod($finalFile, 0644 );
    }
    }


    lo script funziona bene ma come farlo lavorare in background senza dover attendere l'esecuzione dello script?
    Realizzazione siti web

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    potresti usare exec() per avviare uno script asincrono sul server

  3. #3
    potresti farmi un esempio
    Realizzazione siti web

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    se usi linux, ma sarebbe meglio sapere la configurazione, sposti lo script di elaborazione nel file "videoscript_background.php" e come prima linea inserisci #!/PERCORSOINTERPRETEPHPe ti assicuri che non produca output (nessun print o echo, insomma), modifichi quello esistente mettendo come prima istruzione:

    Codice PHP:
    exec('videoscript_background.php'); 
    in pratica lo script videoscript_background.php deve essere eseguibile dalla console del s.o.

    se p.es. il web server è basato su windows si deve dare una stringa diversa a exec (tipo exec 'START ...')

  5. #5
    il percorso dell'interprete php:

    #!/PERCORSOINTERPRETEPHP


    riesco a trovarlo eseguendo phpinfo() ? e se sì sotto quale voce dovrebbe essere:

    alla voce Configure Command ..... forse è quello in grassetto

    './configure' '--build=i686-redhat-linux-gnu' '--host=i686-redhat-linux-gnu' '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--enable-force-cgi-redirect' '--disable-debug' '--enable-pic' '--disable-rpath' '--enable-inline-optimization' '--with-bz2' '--with-db4=/usr' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-gd=shared' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-ncurses=shared' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-xml' '--with-expat-dir=/usr' '--with-dom=shared,/usr' '--with-dom-xslt=/usr' '--with-dom-exslt=/usr' '--with-xmlrpc=shared' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-bcmath' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-pear=/usr/share/pear' '--with-imap=shared' '--with-imap-ssl' '--with-kerberos' '--with-ldap=shared' '--with-mysql=shared,/usr' '--with-pgsql=shared' '--with-snmp=shared,/usr' '--with-snmp=shared' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--enable-mbstring=shared' '--enable-mbstr-enc-trans' '--enable-mbregex' '--with-mime-magic=/usr/share/file/magic.mime' '--with-apxs2=/usr/sbin/apxs'
    Realizzazione siti web

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    la parte evidenziata è un flag del comando di compilazione... comunque basta che provi con uno script di test in cui metti come prima riga quella che ti dicevo e come contenuto successivo un bel print 'prova exec!'; e richiama il tutto anteponendo al comando exec un assegnamento di variabile da stampare.

    Insomma crea due script:

    1.php
    Codice PHP:
    #!/usr/bin/php
    $output exec ('2.php');
    print 
    "RISULTATO: '$output'"
    e

    2.php
    Codice PHP:
    print 'prova exec!'
    sempre che tu abbia i permessi di fare queste esecuzioni... se non sai neanche dov'è l'interprete forse non hai abbastanza permessi per il comando exec, comunque prova un po'

  7. #7
    ho il pieno controllo della macchina in quanto sono in housing posso fare tutto anche incasinarmi con i file di configurazione ecco perchè ci vado cauto e lascio fare ai sistemisti quello che sono i file di configurazione insomma non sono molto pratico.

    Cmq ti ringrazio infinitamente

    ho provato ad eseguire 1.php e mi dà :

    RISULTATO: '' .... quindi non esegue il print di file 2.php è esatto?

    via sshell posso accedere a tutte le cartelle della macchina ma in genere su una macchina linux Cento OS dove viene parcheggiato l'interprete?

    grazie ancora
    Realizzazione siti web

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    prova a guardare in phpinfo dov'è il php.ini

  9. #9
    sotto /etc
    Realizzazione siti web

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    sono un po' cotto a quest'ora... comunque guarda nei soliti posti (tipo /usr/local/etc.) o al limite apri una shell e usa whereis php

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.