approccio migliore per il debug veloce ed efficiente grande immagine fissaggio file caricati fallimento

StackOverflow https://stackoverflow.com/questions/3966365

Domanda

Si consideri una normale funzionalità di caricamento delle immagini PHP (se non utilizzano AJAX) e non si verifica questo problema di grande caricamento delle immagini in mancanza di tanto in tanto - meno frequentemente su un server di prova e più frequentemente su un altro server di prova. Supponendo che il debugger non è ancora iniziata il debug del problema e non ci sono problemi di autorizzazione di file / cartelle, come procedere?

Sono sicuro che ho file_uploads on. Io non voglio solo impostare ciecamente alcuni valori di sicurezza o aumentare i valori finché non funziona. Fondamentalmente, io voglio i valori di essere esattamente come per i miei moduli interessati. Sono pronto a sostituire le impostazioni nei miei moduli in questione, se questo è l'approccio migliore.

impostazioni relative al caricamento di file , queste sono tutte le impostazioni relative / connessi -
    * file_uploads
    * upload_max_filesize
    * max_input_time
    * memory_limit
    * max_execution_time
    * post_max_size

  1. parametri Trovare / Valori per lo script in questione -
    In modo che posso scoprire che uno di loro è / quanti di loro sono effettivamente violati dal mio script e causando il fallimento, ho bisogno di trovare prima i valori corrispondenti per il mio script. Come trovare i seguenti valori per il mio script:

    • Total caricato file di formato
    • del tempo di ingresso
    • Utilizzo della memoria
    • Script Execution time
    • Inviato dimensione dei dati

    Quale strumento (s) può essere utilizzato per lo stesso. Utilizzando il codice PHP, credo, posso scoprire alcuni:

    • Esecuzione script tempo -. Differenza tra microtime(true) all'inizio e alla fine lo script
    • Totale Caricati dimensioni del file - ciclo foreach su $_FILES per trovare la somma di attributi ['size']

    Come scoprire il resto, come l'utilizzo della memoria, del tempo di ingresso, ecc?

  2. Dove / Come ignorare
    Alla fine, quando ho trovato l'impostazione violazione (s), supponiamo ho bisogno di aumentare i valori di override / per 2 delle impostazioni. Dove applicare la sostituzione? Credo che non è corretto per impostare memory_limit ecc per tutti i moduli in .htaccess o in script PHP. Piuttosto, l'applicazione solo nel modulo in questione è meglio. Ho ragione?

  3. Impostazioni per meno esigenti moduli
    Inoltre, per gli altri moduli, in cui non sono necessari molto le risorse, è bene / saggio per sostituire le impostazioni di ridurli, lo studio dopo aver attentamente i requisiti di risorse dei moduli? Sarà ridurre il consumo di risorse inutile? Se sì, come di avere 2 o 3 combinazioni di queste impostazioni (a seconda delle esigenze di progetto, dar loro un nome normale-script, heavy-file-upload) e composizione di una singola funzione per caricare qualsiasi combinazione per ogni modulo?

  4. memory_limit precauzioni
    Per quanto riguarda memory_limit è menzionato qui che -

      

    Impostazione un valore troppo alto può essere molto pericoloso, perché se molti arrivi sono gestite contemporaneamente tutta la memoria disponibile sarà utilizzato e altri script non collegati che consumano molta memoria potrebbero influenzare l'intero server pure.

Quali precauzioni generali da prendere su questo?

Grazie,
Sandeepan

È stato utile?

Soluzione

Alcune idee per il debug:

Per il test manuale, desidero preparare una serie di immagini con differenti dimensioni cui netto dimensioni (larghezza x altezza) aumenta a piccoli passi: 100 x 100, 100 x 200, 100 x 300 .... e provare. Ad un certo punto, si potrebbe iniziare in mancanza, se il problema è il limite di memoria. Si potrebbe accendere error_reporting() per lei solo (magari usando un cookie debug di qualche tipo) in modo da vedere che cosa non esattamente.

Se questo non è un'opzione, vorrei creare un meccanismo di qualche tipo per la registrazione a lungo termine che memorizza dimensioni dell'immagine in un file di log o un tavolo prima dell'inizio del ridimensionamento, e anche i contenuti della matrice $_FILES. Alla fine il successo dello script, aggiungere un "OK" per quella voce. In questo modo, sarà in grado di saperne di più circa i caricamenti non riusciti, se lo fanno attraverso allo script (e non mancano in anticipo a causa di un'impostazione di timeout).

  

Inoltre, per gli altri moduli, in cui non sono necessari molto le risorse, è bene / saggio ignorare le impostazioni di ridurli

Credo che la risposta è sempre "no". Per quanto ne so, il limite di memoria è il limite massimo di memoria che può essere allocata, ma tale importo non è riservata a ogni richiesta. Non ho mai sentito di nessuno messa a punto il limite di memoria in questo modo.

Tuttavia, se alcune parti del sistema (ad esempio l'immagine resizer) richiedono un limite enormemente memoria alta, può essere saggio applicare impostazioni specifiche memory_limit solo a loro, ad esempio attraverso un .htaccess impostazione .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top