Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765

    ciclo while finchè il file non è disponibile

    buonasera a tutti,

    dalle vostre conoscenze sapete se è possibile fare un ciclo finchè un file non è disponibile per essere aperto con fopen?

    Ora ricevo a random un errore che mi dice che fopen non può aprire il file (i permessi sono giusti, tranne che il file è in uso momentaneamente durante l'esecuzione dello script) (fopen(miofile.ext): failed to open stram permission denied ecc ecc)

    avevo pensato a qualcosa tipo:
    Codice PHP:
    do{
    aspetta();
    }while(
    condizione
    dove aspetta() e la mia funzione che produrra un'output durante l'attesa..
    e condizione è...
    qui viene il bello, inizialmente avevo pensato a is_writable, dite che funzioni?
    cache temporanea? come devo fare?

    grazie per l'aiuto
    eXvision

  2. #2
    Ciao.
    Se vuoi puoi usare le istruzioni break, e continue.
    Logicamente, se vuoi utilizzare tale metodo dovresti usare un ciclo while.
    codice:
    while (condizione)
       {
          if(is_readble($fp))
             {
                 ...//azioni da compiere
                 break;
             }
       }
    Spero di esserti stato d'aiuto.
    Ciao
    Ho una logica tutta mia, fatta di if else ...

  3. #3
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    si, ma questo non fa al caso mio...

    io chiedevo appunto come usare, se è possibile, is_readble o is_writeable all'interno della condizione while.
    es
    Codice PHP:
    do{
    aspetta();
    }while(
    is_writeable("mio_file.ext")) 
    nessuno?
    eXvision

  4. #4
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    per ora ho scritto questo...

    Codice PHP:
    //è dentro una funzione, per questo è presente un return;

    if(is_readable($file)){
        do{
            
    clearstatcache();
            if(!
    is_readable($file))
                
    aspetta();
            else
                return;
        }while(
    true);

    secondo voi può funzionare?

    oppure si potrebbe utilizzare flock, tranne che il problema avviene appunto quando cerco di aprire il file con fopen!

    esempio:
    Codice PHP:
    <?php
    // waiting until file will be locked for writing (1000 milliseconds as timeout)
    if ($fp fopen($fileName'a')) {
      
    $startTime microtime();
      do {
        
    $canWrite flock($fpLOCK_EX);
        
    // If lock not obtained sleep for 0 - 100 milliseconds, to avoid collision and CPU load
        
    if(!$canWriteusleep(round(rand(0100)*1000));
      } while ((!
    $canWrite)and((microtime()-$startTime) < 1000));

      
    //file was locked so now we can store information
      
    if ($canWrite) {
        
    fwrite($fp$dataToSave);
      }
      
    fclose($fp);                                 
    }
    ?>
    considerazioni o consigli?
    eXvision

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.