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

    Dimensione massima di un array

    Salve, qualcuno sà qual'è la dimensione massima di un array sia come numero di elementi che come grandezza di ogni elemento?
    Il mio problema nasce dal fatto che ho un file txt con diverse righe, l'ho aperto con fopen e volevo memorizzare le varie righe in un array ma mi esce il seguente errore:

    Fatal error: Allowed memory size of 94371840 bytes exhausted (tried to allocate 16 bytes) in /membri/nomesito/administrator/visualizzastatistiche.php on line 107

    La riga 107 corrisponde proprio all'istruzione che memorizza i dati presi dal file txt nell'array come di seguito:
    $dato[]=fgets($file);

    Grazie mille.
    Ms.

  2. #2
    credo tu debba modificare il file php.ini

    codice:
    ini_set("memory_limit","quantovuoiM");
    se sei su linux lo trovi qui:

    sudo vi /etc/php5/apache2/php.ini
    Andrea B.


    blabliblu.

  3. #3
    Per quanto riguarda la memoria massima utilizzabile, come ha già detto Eresia, il limite può essere impostato da php.ini con 'memory_limit',

    Rimane il fatto che memory_limit può essere grande finhcé vuoi purché sia < della memoria dipsonibile sulla macchina dove gira lo script.
    Cioè se hai 1Gb di memoria e setti il memory_limit a 2Gb dopo aver allocato 1Gb (anche meno in realtà) direi proprio che si schianta.

    Per quanto riguarda invece il numero massimo di elementi,un array monodimensionale (su macchne a 32 bit) in teoria dovrebbe poter contenre 2^30 elementi perché il massimo indice usabile è appunto 2^30...

    ****edit****
    Ah dimenticavo....
    se stai leggendo un intero file in un array vuol dire che c'è qualcosa che non va nella maniera in cui hai progettato il tutto...
    cerca piuttosto di leggere tramite buffer, ovvero di leggere tot byte alla volta dal file metterli nell'array usarli, leggerne altri tott ecc ecc

  4. #4
    Innanzitutto ringrazio coloro che hanno risposto al mio problema.
    Rispondo subito ai messaggi incominciando con Eresia.
    Purtroppo ho dimenticato di dire che l'array in questione è in php quindi lato server.
    Il server che ospita il mio sito è Altervista e quindi gira sotto Linux.
    Come posso modificare il file php.ini??

    Per quanto riguarda philbert, leggere un file in un array è "un esigenza" per me.
    Non spiego cosa devo fare in quanto, il modo in cui lo stò facendo, è sbagliatissimo, verrei criticata da tutti i programmatori.
    Purtroppo non sono esperta in programmazione e devo arrangiarmi con le mie misere conoscenze.
    Il file txt è un file che varia di dimensioni superando abbondantemente il megabyte, se riuscissi a leggere il file txt da un megabyte in un array, mi reputo già fortunata e soddisfatta.
    Grazie mille.
    Maria

  5. #5
    Originariamente inviato da Mariastella1975
    [...]
    Come posso modificare il file php.ini??
    Esattamente nel modo in cui ti ha suggerito Eresia


    Codice PHP:
    ini_set('memory_limit''64M');//setta il limite di memoria a 64Mb 
    Per quanto riguarda philbert, leggere un file in un array è "un esigenza" per me.
    Non spiego cosa devo fare in quanto, il modo in cui lo stò facendo, è sbagliatissimo, verrei criticata da tutti i programmatori.
    Scusa, ma non è meglio se lo spieghi?


    Purtroppo non sono esperta in programmazione e devo arrangiarmi con le mie misere conoscenze.
    Appunto magari qui tra tanti che programmiamo 24h/24h forse forse qualcuno ti indica una maniera più fattibile.


    Il file txt è un file che varia di dimensioni superando abbondantemente il megabyte, se riuscissi a leggere il file txt da un megabyte in un array, mi reputo già fortunata e soddisfatta.
    Grazie mille.
    Davvero, guarda che avere un array da 1GB in memoria è piuttosto un'assurdità in PHP...
    C'è sicurmente una maniera più semplice e veloce per ottenere quello che devi ottenere

  6. #6
    Ciao philbert, grazie per la risposta.
    L'array dovrebbe essere di 1 o 2 Mb e non Gb per cui più piccolo di quello che mi hai scritto.
    Il mio problema è questo.
    Ho un sito e ho bisogno di alcuni database.
    So usare benissimo access ma il mio sito gira sotto Linux per cui il database non mi funziona.
    Ho provato a studiare mysql ma, nonostante i miei numerosi tentativi, non sono riuscita neanche a capire come incominciare e ogni volta che ci riprovo, mi arrendo.
    Ho chiesto aiuto ai miei amici che, con parole molto gentili, mi hanno detto che li stavo scocciando.
    Ho risolto utilizzando dei file txt come database e che mi hanno risolto il problema in tutte le occasioni tranne che per le statistiche poichè, il file txt per codeste statistiche è un pò più complesso da gestire.
    Ho impostato il txt in questo modo:
    ogni riga contiene i valori delimitati dal carattere "|" così: ip|data|ora|risoluzionevideo|paginavisitata|ecc..
    L'intera riga viene letta, elaborata dal codice php e mostrata a video.
    Se ho 10 utenti che si son collegati al sito, il file txt deve essere aperto e chiuso 10 volte.
    Quando raggiunge i 400 utenti oppure 1 Megabyte di grandezza, il funzionamento incomincia ad essere lento per cui devo resettare il database.
    La cosa non mi da molto fastidio in quanto ho bisogno di monitotare i dati aggiornati.
    Mi piacerebbe molto imparare mysql ma, al momento non sono riuscita a farlo.
    Ecco il motivo.
    Grazie di tutto.
    Maria

  7. #7
    che cosa non riesci a fare con mysql?

    se intendi creare/modificare le tabelle l'hoster dovrebbe metterti a disposizione phpmyadmin, un'interfaccia grafica molto completa e user friendly.

  8. #8
    Ciao alfonsovincenzo.
    In realtà ho difficoltà proprio ad incominciare a creare il databasee leggere il contenuto.
    Stamattina mi sono applicata un pò di più, ho attivato il database, ho creato una tabella, ho creato alcuni campi e ho inserito alcuni valori al suo interno.
    Nel creare i campi tramite phpadmin, mi venivano chiesti diversi parametri da settare, io ho inserito soltanto il nome da assegnare al campo ed il tipo ossia varchar, giusto per cominciare.

    Ho creato il seguente codice in php che dovrebbe recuperarmi il valore dei campi "id e data" e mostrarmeli a video ma ho dei problemi, ho segnato a fianco delle righe quello che succede.
    Ricordo che il nome del database è my_casavacanzeischi mentre quello della tabella è statistiche.

    <?php
    $connessione = mysql_connect() or die("Connessione non riuscita: " . mysql_error());
    print ("Connesso con successo
    "); //la connessione viene effettuata con successo
    mysql_select_db ( "my_casavacanzeischi", $connessione ) or die("Errore nella selezione del database"); //il database si connette con successo

    $query = mysql_query("SELECT * WHERE 1=1",$connessione);
    if ($query==FALSE) die("errore nella composizione della query"); //quì mi esce sempre l'errore
    mysql_close($connessione);

    while($row=mysql_fetch_array($query)){
    echo "ip: ".$row[ip];
    echo "
    ";
    echo "data: ".$row[data];
    }
    ?>

    Siccome è la prima volta che utilizzo sql, il codice l'ho copiato da internet, mi sai dire dov'è l'errore?
    Inoltre non riesco a capire dove devo inserire il nome della tabella che, nel mio caso, si chiama "statistiche".
    Il tempo di capire il funzionamento e poi finalmente sostituirò i miei txt con un database vero e proprio.
    Grazie
    Maria

  9. #9

    -- PROBLEMA RISOLTO --

    Sono riuscita a risolvere il problema, sono riuscita ad accedere alla tabella, recuperare i dati e mostrarli a video. Per me è molto.
    Adesso non mi resta che studiare.
    Grazie a tutti.
    Marias.

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.