2013-04-19 17 views
18

Ho creato una pagina di caricamento in PHP, ma non so perché la pagina non carichi documenti superiori a 500 MB. Questa è la prima volta che provo a caricare qualcosa di così grande, ho cambiato tutte le configurazioni nel PHP.INI (post_max_size = 700M, upload_max_filesize = 600M e max_execution_time = 300). I codici per il caricamento è, come di seguitoCome caricare file di grandi dimensioni superiori a 500 MB in PHP

if(isset($_FILES['upload']) && !empty($_FILES['upload']['name'])){ 
move_uploaded_file($_FILES['upload']['tmp_name'], $this->filePath.$this->fileName); 
} 

ho bisogno di aiuto, mi chiedo se c'è qualcosa che non sto facendo giusto ..

+5

Vuoi caricare 500 MB in meno di 5 minuti? La tua connessione internet è veloce! – Jocelyn

+0

Quali sono gli errori nel registro errori del server? – Jocelyn

+0

@all, mi spiace che il mio server non sia attivo, l'errore restituito è il nome dell'indice indefinito, come se il campo di input del caricamento del file non esiste, o talvolta dice timeout di esecuzione, mi ha frustrato –

risposta

16

Pensi che aumentare il limite delle dimensioni di caricamento risolverà il problema? cosa succede se caricando un file da 2 GB, cosa sta succedendo allora? Prendi in considerazione l'utilizzo della memoria di tale script?

Invece, quello che ti serve è Chunked caricati, vedere qui: Handling plupload's chunked uploads on the server-side e qui: File uploads; How to utilize "chunking"?

+0

+1.Questa sarebbe la strada da percorrere. L'invio di file di grandi dimensioni in HTTP è abbastanza inaffidabile. – Jean

+0

@ Jean - lo so, l'ho sentito sulla mia pelle. – Twisted1919

9

Con la configurazione, PHP permette solo di caricare file fino a una certa dimensione. Ci sono molti articoli sul web che spiegano come modificare questo limite. Qui di seguito sono alcuni di loro:

Per esempio, è possibile modificare il file php.ini e impostare:

memory_limit = 32M 
upload_max_filesize = 24M 
post_max_size = 32M 

Avrete quindi è necessario riavviare Apache.

Nota:
Detto questo, il caricamento di file di grandi dimensioni come quella non è molto affidabile. Possono verificarsi errori Potresti voler dividere i file e includere alcuni dati aggiuntivi per le correzioni degli errori. Un modo per farlo è usare par recovery files. È quindi possibile controllare i file dopo il caricamento utilizzando lo par command line utility su sistemi unix-like.

0

presumo che significa che si trasferire i file tramite HTTP. Anche se non è così male come l'FTP, non è una buona idea se puoi trovare un altro di risolvere il problema. HTTP (e quindi i programmi dei componenti) sono ottimizzati per il trasferimento di file relativamente piccoli su Internet.

Mentre il protocollo supporta le richieste di intervallo da server a client, non consente l'operazione inversa. Anche se il software alle due estremità non è influenzato dal volume, maggiore è il numero di dati che si sta spostando su , maggiore è l'intervallo durante il quale si potrebbe perdere la connessione. Ma il problema più grande è questo avvertimento nell'ultima frase.

Problemi correlati