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

    problemi con Allowed memory size

    ciao a tutti!
    come da titolo ho un problema con la memoria!
    ricevo questo errore:

    Allowed memory size of 12582912 bytes exhausted (tried to allocate 8192 bytes)

    come devo fare per ovviare all'inconveniente?

    lo ottengo quando devo creare l'anteprima di un'immagine salvata in un database!
    ma non capisco come mai ricevo questo errore, visto che la stessa immagine su un altro sito [ ma sotto lo stesso server ] la vedo correttamente!
    l'unica cosa diversa è il codice per fare il resize! ma il codice funziona, perché mi fa vedere tutte le immagini tranne alcune, e per quelle alcune ottengo l'warning di cui sopra.

    vi riporto il codice che uso per il resize:
    Codice PHP:
    <?
    ob_start
    ();
    require( 
    "connect.inc.php" );

    $blobId $_GET['blobId'];
    settype($blobIdinteger);

    $dbQuery "SELECT `blobType`, `blobData` FROM `acquisti` WHERE `id_casa` = '".$blobId."'";

    $result mysql_query($dbQuery);

    $fileType = @mysql_result($result0"blobType");
    $fileContent = @mysql_result($result0"blobData");
    header("Content-type: $fileType");

    require( 
    "resize.php" );
        
    $img_res imagecreatefromstring($fileContent);
    $new_img_res resize_image($img_res10490); # x y
    unset($img_res);
    print_image($new_img_res100);
    unset(
    $new_img_res);
    ?>
    e questo invece è il file resize.php
    Codice PHP:
    <?
    function resize_image($img_res$maxX$maxY) {
        
    $actualX=imagesx($img_res);
        
    $actualY=imagesy($img_res);
            
        if (
    $actualY>$maxY){
            
    $newY $maxY;
            
    $newX=($actualX/$actualY)*$newY;
            if (
    $newX>$maxX) {$newX $maxX$newY = ($actualY/$actualX)*$newX;}
        }elseif (
    $actualX>$maxX){
            
    $newX $maxX;
            
    $newY = ($actualY/$actualX)*$newX;
            if (
    $newY>$maxY) {$newY $maxY$newX=($actualX/$actualY)*$newY;}
        }else{
            
    $newX $actualX;
            
    $newY $actualY;
        }
            
        
    $tmp_img_res imagecreatetruecolor($newX$newY);
            
        
    $res imagecopyresampled($tmp_img_res$img_res0000$newX$newY$actualX$actualY);
        return 
    $tmp_img_res;
    }

    function 
    save_image($img_res$filename$quality=100) {
        
    imagejpeg($img_res$filename$quality);
    }

    function 
    print_image($img_res$quality=100) {
        
    header('Content-Type: image/jpeg');
        
    imagejpeg($img_res,NULL$quality);
    }
    ?>
    in caso possano servire vi riporto anche le caratteristiche del sistema che uso:

    Webserver Apache
    PHP Version 4.3.10
    Linux edge 2.4.29
    GD Version 2.0.28

    Grazie per le risposte!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    dimenticavo di dire che l'errore lo ricevo a questa linea:

    $img_res = imagecreatefromstring($fileContent);
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    mi correggo un attimo! nel mio primo posto dicevo che su un altro sito non mi dava nessun problema [ e questo è vero ] ma sull'altro sito, dove funziona, non creo nessuna anteprima, ma faccio vedere l'immagine di dimensioni reali!

    quindi il problema resta nel momento in cui faccio il ridimensionamento!
    vedrò di modificare il php.ini

    ma leggendo qua e là mi sembra di ricordare che sotto linux fosse possibile modificare il paramentro della memoria anche tramite script, ma non mi ricordo quale fosse la funzione.
    qualcuno riesce ad indirizzarmi in questo senso?

    o magari correggendo il mio codice in modo che non consumi troppa memoria! qualsiasi suggerimento mi sarà utile e prezioso!

    Grazie!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  4. #4
    up
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    ehm...
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    think simple think ringo

  7. #7
    grazie per la risposta!
    lo terrò presente per la prossima volta! per ora ho risolto ridimensionando la foto e caricandola sul sito ad una risoluzione un pò più bassa.

    Il cliente l'aveva caricata a 2048*1536 e dimezzandola funziona, anche se comunque rimane ancora piuttosto alta!
    e si che gli avevamo detto di caricarle al masismo 640*480

    Grazie mille!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    [supersaibal]Originariamente inviato da 13manuel84
    Il cliente l'aveva caricata a 2048*1536 e dimezzandola funziona, anche se comunque rimane ancora piuttosto alta!
    e si che gli avevamo detto di caricarle al masismo 640*480

    Grazie mille! [/supersaibal]
    ti conviene inserire nel codice un controllo sulle dimensioni max di upload delle immagini...



    think simple think ringo

  9. #9
    si si di solito il controllo lo metto!
    solo che ho dovuto metter mano ad un codice che aveva scritto il programmatore che lavorava qui prima di me e questo controllo non c'era!
    ora l'ho aggiunto e non dovrei più avere inconvenienti!

    Grazie per i consigli!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.