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

    Limiti dimensionali array

    Buonasera a tutti

    Oggi sono incappato in un problema piuttosto strano.
    Tempo addietro ho sviluppato una applicazione gestionale in PHP per un cliente che ha sempre funzionato e funziona tuttora molto bene, eccezion fatta per il problema esposto di seguito.

    In poche parole: ho una pagina che gestisce dei dati ordinati in righe di una tabella (immaginate che ogni riga sia un "utente" ed ad ogni cella della riga corrisponda un dato ed il rispettivo campo di un form). Al submit della pagina viene ovviamente generato l'array $_REQUEST contenente tutti i dati che poi verifico, pulisco ed aggiorno sul database.

    Bene. In fase di progettazione avevo inserito parecchi dati anche per testare le performances del programma ed era tutto soddisfacente. Oggi invece, dopo aver notato il problema e verificato che non è un problema di database o di procedura (perchè la stessa pagina con altri dati è perfettamente funzionante), ho constatato che si verifica solo dove il risultato di count($_REQUEST) è superiore a 1002

    Qualcuno sa da cosa può dipendere?

    Grazie a tutti da subito per l'attenzione e per l'eventuale aiuto

  2. #2
    Per dare qualche informazione in più...

    memory_size_limit è impostata a 128mb
    max_execution_time a 30 secondi
    Lo script non restituisce nessun errore o warning, semplicemente non esegue nulla perché non rientra nelle condizioni previste visto che l'array $_request è troncato.

  3. #3
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573
    Il method del form è get o post?

    se è GET, il limite dipende dal browser o dal http://httpd.apache.org/docs/2.2/mod...mitrequestline (ma dovresti ricevere un errore 414 se supera il LimitRequestLine)
    se è POST controlla anche il post_max_size
    http://www.php.net/manual/en/ini.cor....post-max-size

    edit
    dando per scontato che usi apache

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Se invece di $_REQUEST usi $_POST o $_GET a seconda del method del form (ma suppongo post date le dimensioni dei dati passati)?

  5. #5
    Il form usa come method POST... ora do un'occhiata a post_max_size e vedo che succede!

    (Se uso $_POST ho lo stesso problema... già provato! )

  6. #6
    Ahem... no... direi che non è quello il problema... post_max_size è impostato a 16M

    I dati passati sono per lo più numeri e non credo arrivino a passare 1-2kb di informazioni.
    La cosa più strana è che sembra esserci un limite impostato sul numero di elementi dell'array e non sul peso. Mi presenta lo stesso difetto solo nelle maschere con un certo numero di elementi (superiori a 1002 appunto).

  7. #7
    Ok, trovato il problema e risolto. Condivido così magari a qualcun'altro potrebbe tornare utile.

    Innanzitutto devo correggermi da solo: il limite di $_POST era 1000. count($_REQUEST) mi restituiva 1002 perchè effettivamente passo anche 2 valori in GET.

    Il problema sta in un limite impostato di default per PHP (dalla versione 5.3.9) come descritto qui:
    http://www.php.net/manual/en/info.co...max-input-vars

    Prima di tutto consiglio di verificare l'esistenza del limite nei risultati di phpinfo() cercando max_input_vars.
    Basta agire su quel limite per ovviare al problema.
    Occhio però che come giustamente detto dal manuale si tratta di una direttiva da usare con cautela per evitare problemi di sicurezza e stabilità.

  8. #8
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    5
    La cosa più strana è che sembra esserci un limite impostato sul numero di elementi dell'array e non sul peso.
    [img NO SPAM!!!! gif[/img]

  9. #9
    Comunque e' molto inusuale ricevere piu' di 1000 diversi campi via POST, non puoi mettere i dati in un array?

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.