Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Qualcuno mi corregge uno script?

    Salve.
    Ho realizzato (non farina del mio sacco, ma "riadattato") uno script che
    esegue le seguenti operazioni:

    - va a leggere una directory ed eventuali sottodirectory
    - per ogni file .ogg che trova estrae i tag dal file e li inserisce in
    un database

    Vorrei chiedere a qualcuno che ne sa più di me (mi sono limitato a
    ritoccare qua e là lo script, non sarei in grado di farlo da zero) se
    vuole correggerlo, controllarlo.
    L'ho provato a casa mia e a volte sembra andare in loop...
    Insomma, se qualcuno è disposto a darmi una mano, sarei davvero grato.
    Sinceramente mi incasino malamente tra i vari cicli while e for...

    Posto qua i due script?

    Inoltre una domanda: per effettuare questa operazione (ovvero estrarre
    dai file .ogg i tag, che permessi devono avere i file e le directory
    (sono su linux, ovviamente).

    Grazie mille.
    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  2. #2
    prova a postare solo la parte di codice che va in loop

  3. #3
    Ok...
    Questo è lo script estrai_dati.php che viene eseguito per ogni file (è incluso nello script più "generale").

    Le variabili $filename, $e e $f esistono...

    Codice PHP:
    $filename="./brani/$e/$f"
        
    $fp fopen$filename'r');
        
    $info = array();
        
    $info['size'] = filesize$filename );
        
    $info['name'] = basename$filename );
        
    $info['path'] = dirname$filename );

        
    // mi sembra sia questo ciclo while che vada in loop
        
    $done false;
        while( 
    $done == false ) {
            
    $working fread$fp);
            if( 
    $working == "l" ) {
                
    $working .= fread$fp);
                if( 
    $working == "libVorbis" ) {
                    
    $done true;
                    
    //echo ("sergio");
                    
    }
            }
        }
        
       while( 
    ord$working ) > 31 ) {
            
    $working fread$fp);
        }
        
    $tag "";
        while( 
    $tag != "done" ) {
            
            
    $working "";
            while( ( 
    $working != "=" ) && ( $tag != "done" ) ) { 
                if( 
    ord$working ) > 31 ) {
                    
    $tag .= $working;
                }
                
    $working fread$fp);
                if( 
    $tag == "v" ) {
                    
    $tag .= "o".fread$fp);
                if( ( 
    substr_count$tag"vorbis" ) == ) && ( substr_count$tag"BCV" ) == ) ) {
                        
    $tag "done";
                    } else {
                        
    fseek$fp, ( ftell$fp ) - 10 ) );
                    }
                }
            }

            if( 
    $tag != "done" ) {
                
    $working fread$fp);
                while( 
    ord$working ) > 31 ) {
                    
    $title .= $working;
                    
    $working fread$fp);
                }
                
    $info[$tag] = $title;
                
    $tag "";
                
    $title "";
            }
        }
        
    fclose$fp );


        return 
    $info
    Probabilmente c'è qualche ciclo che entra in loop...
    Ho segnato con un commento il punto dove sembra incasinarsi...

    Sergej

    Ps: che mi dici per quanto riguarda i permessi dei file?
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  4. #4
    Codice PHP:
        $done false
        while( 
    $done == false ) { 
            
    $working fread$fp); 
            if( 
    $working == "l" ) { 
                
    $working .= fread$fp); 
                print 
    $working.'
    '
    ;
                if( 
    $working == "libVorbis" ) { 
                    
    $done true
                    
    //echo ("sergio"); 
                    

            } 
        } 
    ho aggiunto la linea:

    print $working.'
    ';

    così ti visualizza il contenuto della variabile $working e vedi se il controllo:

    if( $working == "libVorbis" )

    viene verificato sempre. se questo controllo non si verifica, la variabile $done non è mai TRUE e non si esce dal ciclo. fammi sapere.

    per quanto riguarda i permessi suoi files non so con certezza, ma suppungo debbano essere 777

  5. #5
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Originariamente inviato da OhMyGod
    per quanto riguarda i permessi suoi files non so con certezza, ma suppungo debbano essere 777
    Se, come ho capito, accedi in sola lettura ai files, basta un normale 644, considera che php per leggere/scrivere i file gira con l'uid che ha lanciato apache, quindi con 644 può leggere qualsiasi cosa, se invece deve scrivere trova l'utente di apache con ps aux, aggiungilo al gruppo proprietario dei files e cambia in 664.

    Se non vuoi far leggere i dati a nessuno metti 640 o 660, però ricorda di aggiungere l'utente di apache nel gruppo.

  6. #6
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    avevo già risposto ad un tizio in una discussione con lo stesso codice.. è molto debole quella sentinella della while andrebbero considerati casi patologici, come in parte sottolineato da ohmygod, nei quali se quella condizione nn viene settata a voglia che ti gira e tirigira lo script ed a te ti girano e ti rigirano poi...

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  7. #7
    ero io quel tizio...
    il problema del loop era dovuto ai permessi errati dei file, credo...
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  8. #8
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    scusa sergio per il tizio...

    il problema è sempre lo stesso a mio avviso..

    $done = true;

    se questa riga nn viene eseguita ciao ciao script.. w il loop...

    mi sa che avresti na marea di errori se il problema fossero i permessi.. poi nn scrivi.. leggi mi sembra strano..

    puoi risolvere così..

    Codice PHP:
    if (!is_resource($fp)){
    echo 
    "niente da fare!";
    exit();

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  9. #9
    Originariamente inviato da luke83
    scusa sergio per il tizio...
    Tranquillo, prima mi sono dimenticato di mettere una faccina

    CMQ l'errore sembra essere davvero il problema dei permessi...
    Se mi si ripresenterà l'errore mi rifarò vivo

    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

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.