Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [PHP]Creare file zip

  1. #1

    [PHP]Creare file zip

    Ciao, devo file un file zip al volo e poi farlo scaricare, tale file contiene delle immagini jpg, e il peso totale potrebbe essere alto, tanto che alcune volte mi esce questo errore Fatal error: Allowed memory size...... non c'è un modo per evitare questo errore? ho aumentato il memory_limit ma nulla da fare, se aumentano le foto da mettere nello zip si ripresenta il problema

  2. #2
    Un metodo per evitare l'errore è utilizzare un tool esterno per la compressione e poi inviare il file al client tramite readfile() o funzione equivalente.

  3. #3
    Originariamente inviato da filippo.toso
    Un metodo per evitare l'errore è utilizzare un tool esterno per la compressione e poi inviare il file al client tramite readfile() o funzione equivalente.
    Quindi dici di mettere direttamente nel server il file zip?

  4. #4
    potresti farlo creare invece che da una classe php tramite tar/gz con una chiamata di sistema... ammesso che tu abbia i permessi per farlo sul server.... sei in hosting o hai una macchina tua??

  5. #5
    Originariamente inviato da pablopuello
    potresti farlo creare invece che da una classe php tramite tar/gz con una chiamata di sistema... ammesso che tu abbia i permessi per farlo sul server.... sei in hosting o hai una macchina tua??
    sono in hosting, non so se posso farlo, devo controllare. in pratica faccio chiamare a php il comando per creare lo zip, poi come faccio per farlo scaricare? l'eliminazione non è un problema, con uno script elimino tutti i file più vecchi di 24 ore, ma la creazione e il successivo download si

  6. #6
    Originariamente inviato da jeck
    poi come faccio per farlo scaricare? l'eliminazione non è un problema, con uno script elimino tutti i file più vecchi di 24 ore, ma la creazione e il successivo download si
    Mi sembrava di averti già risposto in merito:

    Originariamente inviato da filippo.toso
    ... poi inviare il file al client tramite readfile() o funzione equivalente.
    Inoltre non è necessario utilizzare un'altro script per l'eliminazione, puoi farlo all'interno dello stesso file.

  7. #7
    @filippo.toso

    Io avevo capito di uplodare direttamente lo zip, poi farlo caricare tramite la funzione readfile() questa soluzione non posso adottarla per diversi motivi.
    Invece chiamare il sistema come dice pablopuello da php non so ancora se è fattibile perchè non ho ancora provato. comunque se fosse possibile, non ho ugualmente problemi di timeout o memory limit, visto che viene richiamata da php? se poi creo un file tramite le funzione di linux, non posso cancellarlo subito, ma in qualche modo devo cancellarlo a distanza di ore, che poi sia nello stesso file, o file esterno richiamato da una cron non importa.

  8. #8
    Originariamente inviato da jeck
    Io avevo capito di uplodare direttamente lo zip, poi farlo caricare tramite la funzione readfile() questa soluzione non posso adottarla per diversi motivi.
    Non mi sembrava di aver scritto questo. Ti avevo suggerito di utilizzare un tool esterno al PHP per creare il file ZIP in modo da evitare il memory limit.

    Originariamente inviato da jeck
    comunque se fosse possibile, non ho ugualmente problemi di timeout o memory limit, visto che viene richiamata da php?
    Il memory_limit è relativo alla memoria utilizzata dal PHP. Eventuali processi esterni NON sono conteggiati.

    Originariamente inviato da jeck
    se poi creo un file tramite le funzione di linux, non posso cancellarlo subito,
    E perchè non puoi cancellarlo subito?

  9. #9
    Originariamente inviato da filippo.toso
    E perchè non puoi cancellarlo subito?
    Perchè io devo fare lo zip al volo quando l'utente lo richiede, aspettare il download e poi cancellare il file. se nello stesso file php creo lo zip, lo mando al browser, devo aspettare il download, non lo posso cancellarlo subito.

    che funzione utilizzeresti per fare lo zip? exec o system? poi devo mettere il risultato dello zip in una variabile, altrimenti come faccio a far fare subito il download?

    Se hai un esempio capisco meglio.

  10. #10
    Originariamente inviato da jeck
    Perchè io devo fare lo zip al volo quando l'utente lo richiede, aspettare il download e poi cancellare il file. se nello stesso file php creo lo zip, lo mando al browser, devo aspettare il download, non lo posso cancellarlo subito.
    Ti sbagli. Crei il file zip, lo invii al client tramite readfile() (come già suggerito in precedenza) e poi elimini il file.

    Se non sei convinto che questo possa funzionare, è sufficiente che fai una prova per renderti conto di come funziona readfile().

    Originariamente inviato da jeck
    che funzione utilizzeresti per fare lo zip? exec o system?
    Devi usare una delle funzioni di esecuzione degli script esterni. Quale comando usare poi dipende dal sistema operativo su cui ti trovi e dai tool che mette a disposizione.

    Originariamente inviato da jeck
    poi devo mettere il risultato dello zip in una variabile, altrimenti come faccio a far fare subito il download?
    Sembrerò monotono, ma mi sembrava di averti già risposto in merito:

    poi inviare il file al client tramite readfile() o funzione equivalente.

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.