Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: rallentare un for

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323

    rallentare un for

    Salve , qual'è l'istruzione che posso fare rallentare un for che questo for fa un resize delle immagini e le inserisce nel db.

    in questo codie:
    codice:
    $cartella = opendir("".$dir_admin_photo."".$row_dir.'/auto/');while ($file = readdir($cartella)) {
    $file_array[] = $file;
    }
    foreach ($file_array as $file) {
    if ( $file == ".." || $file == ".") {
    continue;
    }
    
    
    	$file_name = "".sha1($file).".jpg";
    	
    	$resizer = new ImageResizer("".$dir_admin_photo."".$row_dir."/auto/".$file."","".$dir_admin_photo."".$row_dir."/big/".strtolower($file_name)."");
    	$resizer->resizeImage(800,600);
    	$resizer = new ImageResizer("".$dir_admin_photo."".$row_dir."/auto/".$file."","".$dir_admin_photo."".$row_dir."/thumb/".strtolower($file_name)."");
    	$resizer->resizeImage(150,150);
    		
    
    
    	
    	$content = "";
    	$active =1;
    	$data_reg = date("Y-m-d H:i:s");
    	$id_users = $_SESSION["id_users"];
    	
    	$query = "INSERT INTO photo (id_categories,url,content,active,data_reg)VALUES(:id_categories,:url,:content,:active,:data_reg)";
    	$stmt = $db->prepare($query);
    
    
    	$stmt->bindParam(':id_categories', $id_categories, PDO::PARAM_INT);
    	$stmt->bindParam(':url', $file_name, PDO::PARAM_STR);
    	$stmt->bindParam(':content',$content, PDO::PARAM_STR);
    	$stmt->bindParam(':active', $active, PDO::PARAM_INT);
    	$stmt->bindParam(':data_reg', $data_reg, PDO::PARAM_STR);
    	$stmt->execute();
    	
    	unlink("".$dir_admin_photo."".$row_dir."/auto/".$file."");
    		
    		}
    			echo "Fatto";
    	}
    perché se lo lancio e ho tantissime foto lo script si blocca con un time out.

    come posso fare?

    grazie mille e buona serata.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Rallentare il for non servirebbe a nulla in quanto il time out vale per lo script in corso di esecuzione. L'unica cosa che otteresti è un time out con meno foto trattate.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    si infatti .. mi da :
    Maximum execution time of 30 seconds exceeded
    per 49 foto..
    ho provato mettere sleep(30) ma lo stesso.. come posso fare.?

  4. #4
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    764
    processare meno foto contemporaneamente

    o in alternativa http://php.net/manual/it/function.set-time-limit.php
    eXvision

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    ho quasi risolto.. ma adesso l'errore c'è l'ho nella fase finale, ovvero quando deve stampare "fatto",
    e mi da lo stesso errore .. ma inserisce le foto e le resiza tutte 49 foto.

    codice:
    $stmt->bindParam(':id_categories', $id_categories, PDO::PARAM_INT);	$stmt->bindParam(':url', $file_name, PDO::PARAM_STR);
    	$stmt->bindParam(':content',$content, PDO::PARAM_STR);
    	$stmt->bindParam(':active', $active, PDO::PARAM_INT);
    	$stmt->bindParam(':data_reg', $data_reg, PDO::PARAM_STR);
    	$stmt->execute();
    	
    	unlink("".$dir_admin_photo."".$row_dir."/auto/".$file."");
    	
    	
    		}
    		sleep(30);
    		echo "Fatto";
    	}
    prima avevo sbagliato mettere lo sleep, e ora mettendolo fuori dal for .. funziona.. ma alla fine mi da questo errore però le foto resize e inserimento nel db funziona.

    cosa può essere?

    grazie mille e ora vedo la pagina che mi avete linkato.

    buona serata.

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Scusa, ma perché sospendi l'esecuzione dello script? Togli quello sleep(30)

  7. #7
    Mi sfugge la logica secondo cui se uno script ci mette troppo tempo, aggiungere 30 secondi di sleep puo' migliorare la situazione

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    Quote Originariamente inviata da k.b Visualizza il messaggio
    Mi sfugge la logica secondo cui se uno script ci mette troppo tempo, aggiungere 30 secondi di sleep puo' migliorare la situazione
    infatti .. mi migliora e me le fa tutte.. l'unico non capisco che quando termina mi interrompe lo script
    alla riga 99, che la riga 99 c'è un include("layout/footer.php").

    come posso fare per evitare l'ultimo errore.?

    grazie e buona notte.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    ecco il codice completo:
    codice:
    <?php
    session_start();
    ini_set('memory_limit', '2048M');
    
    
    include("inc.php"); 
    include("admin.php"); 
    include("layout/header.php");
    
    
    
    
    $dir = (isset($_GET["dir"])) ? trim ((string)$_GET["dir"]): '';
    
    
    if(empty($dir))
    {
        echo "<p>L'url e vuoto</p>";
    
    
    }else
    {
    
    
        $query = "SELECT * FROM photo_categories WHERE dir=:dir";
        
        $stmt = $db->prepare( $query );
        
        $stmt->bindParam(':dir', $dir , PDO::PARAM_STR);
        
        $stmt->execute();
        
        $row = $stmt->fetch();
        
        $num = $stmt->rowCount();
        
        if($num > 0)
        {
        
            $row_dir = $row["dir"];
            $id_categories = $row["id"];
            
        }else
        {
            $msg =  "<p>Nessun dato</p>";
        
        }
        
    ?><p class="info_title">Foto</p>
    <table class="control">
    <tr>
    <td>
    <a href="album_view.php?id=<?php echo $id_categories; ?>">Home</a>
    </td>
    </tr>  
    </table>
    <?php
    
    
    if(isset($error)){ echo $error;}
    if(isset($msg)){ echo $msg;} else {
    
    
    $cartella = opendir("".$dir_admin_photo."".$row_dir.'/auto/');
    while ($file = readdir($cartella)) {
    $file_array[] = $file;
    }
    foreach ($file_array as $file) {
    if ( $file == ".." || $file == ".") {
    continue;
    }
    
    
        $file_name = "".sha1($file).".jpg";
        
        $resize = new ResizeImage("".$dir_admin_photo."".$row_dir."/auto/".$file."");
        $resize->resizeTo(800, 600, 'maxWidth');
        $resize->saveImage("".$dir_admin_photo."".$row_dir."/big/".strtolower($file_name)."");
        $resize->resizeTo(150, 150, 'maxWidth');
        $resize->saveImage("".$dir_admin_photo."".$row_dir."/thumb/".strtolower($file_name)."");
    
    
        $content = "";
        $active =1;
        $data_reg = date("Y-m-d H:i:s");
        $id_users = $_SESSION["id_users"];
        
        $query = "INSERT INTO photo (id_categories,url,content,active,data_reg)VALUES(:id_categories,:url,:content,:active,:data_reg)";
        $stmt = $db->prepare($query);
    
    
        $stmt->bindParam(':id_categories', $id_categories, PDO::PARAM_INT);
        $stmt->bindParam(':url', $file_name, PDO::PARAM_STR);
        $stmt->bindParam(':content',$content, PDO::PARAM_STR);
        $stmt->bindParam(':active', $active, PDO::PARAM_INT);
        $stmt->bindParam(':data_reg', $data_reg, PDO::PARAM_STR);
        $stmt->execute();
        
        unlink("".$dir_admin_photo."".$row_dir."/auto/".$file."");
        
        
            }
            
            echo "Fatto";
            sleep(30);
            
        }
    }
    
    
    include("layout/footer.php");
    ?>
    grazie mille e spero che si risolva il problema.

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Sleep = non fare nulla per N secondi...
    Mi spieghi quale teoria ti fa pensare che possa rendere più veloce uno script e impedire che vada in timeout?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.