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

    Thread in PHP ma come????

    Salve a tutti, puo essere mai un linguaggio superutilizzato non fornisce un benchè minimo supporto ai thread, ora mi spiego devo salvare sul server un super pdf da 10000 righe con fdpf, che viene genarato da una pagina php, il problema e che quando chiamo questa pagina, la risposta ovviamente impega molto tempo per arrivare poichè ci vuole tempo per renderizzare il pdf e la richiesta http va in timeout, a me servirebbe un qualche meccanismo per far renderizzare il pdf in un thread in modo da restituire subito la risposta???

    Qualcuno puo aiutarmi???

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    Se FDPF impiega tanto tempo, non puoi velocizzarla.
    Provato così?

    Codice PHP:
    set_time_limit(0
    Se poi il file è davvero tanto grande, considera che FPDF scrive tutto il file in una variabile e poi la spedisce al file, potrebbe verificarsi che non ti sia sufficiente la memoria per scrivere il file nella variabile (il limite in genere è fissato a 8M). In quel caso aumentala con

    Codice PHP:
    ini_set("memory_limit""20M"); 
    Conosci te stesso(?)
    (..e allora perchè scassi a me? )

  3. #3
    Inanzitutto,grazie per le dritte, imparo ogni giorno una cosa nuova ma il fatto è che io il pdf non lo rimando a video ma lo salvo in un file sul server, a me interessa che l'utente richiede la generazione tramite un click di un pulsante, la pagina php avvia la creazione del pdf in un thread e nel frattempo all'utente subito viene inviato un messaggio del tipo generazione avviata, il mio unico limite è quello di non sapere come forzare l'esecuzione della generazione in un thread con il php.
    Non so se mi sono spiegato bene...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    Si ho capito, cercavo questo: http://forum.html.it/forum/showthread/t-1051016.html

    Non è così semplice a mio avviso, ma posso pure dire una cazzata.

    Fossi in te proverei ad utilizzare qualche tecnologia Ajax (tipo jQuery ) per inviare la richiesta al server.
    Conosci te stesso(?)
    (..e allora perchè scassi a me? )

  5. #5
    si, ti assicuro che un linguaggio come PHP non solo non offre il supporto ai thread ma lui stesso ha librerie ufficiali che non sono thread safe!

    poi, in realtà, molto dipende dal webserver ... per esempio apache, se funziona tramite l'mpm prefork, non può sfruttare thread, ma questo è un altro discorso

    come ti hanno suggerito, utilizza AJAX/AHAH o, al limite, un iframe, ma te lo sconsiglio, per aggirare il tuo problema

    Alternativamente considera che quando php invia i dati al browser non chiude la connessione:
    - invii la pagina HTML dove avvisi dell'operazione in corso
    - utilizzi il comando flush() per forzare l'invio dei dati al browser
    - generi il pdf
    - mandi 2 righe di JS che cambiano il testo "generazione avviata" in "operazione conclusa" con il link per il download (se ti serve)

    in tutto questo trambusto è importante che metti il set_time_limit su 0 in modo che se passi i 30 secondi per la generazione del PDF non succede nulla di grave

  6. #6
    Uhm la soluzione del flush mi sembra ottima, non ci avevo pensato, se invece volessi usare i thread nella maniera da te citata su come devo fare????

  7. #7
    Probabilmente PHP non fa per te, hai bisogno di AJAX. Cerca su google maggiori info relative a questo linguaggio di scripting. Ciao.
    Here Comes The Music Ecstasy

  8. #8
    Originariamente inviato da gigi90
    Uhm la soluzione del flush mi sembra ottima, non ci avevo pensato, se invece volessi usare i thread nella maniera da te citata su come devo fare????
    ehm, non ci siamo capiti ... non puoi usarli

    @nightfly83
    scusami,la tua frase non ha senso:
    - "Probabilmente PHP non fa per te", non penso sia tu a doverlo dire, al massimo lo deve dire lui, ma se sta usando questo vuol dire che i requisiti lo necessitano, lo conosce già o gli è stato richiesto
    - "hai bisogno di AJAX" cosa assolutamente falsa perché in questo caso non è necessario, e comunque AJAX = l'utilizzo di un linguaggio server side ... tra i quali è presente anche php.
    - "cerca su google maggiori info relative a questo linguaggio di scripting" ... ehm ... guarda che AJAX è solo una tecologia (basata su un sistema vecchio) ... il linguaggio di scripting è Javascript

  9. #9
    Rispondo a tutti voi,

    A daniele_dll: Ho interpreato male la tua risposta

    Conosco sia PHP che AJAX, provenendo da Asp.NET e quindi dal .NET Framework li vi era un interno namespace di supporto ai Thread: System.Threading inoltre il webserver IIS ha un thread pool ossia una coda di thread a cui posso assegnare azioni(codice) da eseguire semplicemente utilizzando la classe Server e la Proprietà ThreadPool.

    Devo dire che PHP mi piace molto per mezzo della sua semplicità che lo rende estremamente potente, ma devo ammettere che se devi fa cose particolari, alcune volte tali cose non sono supportate .

  10. #10
    Originariamente inviato da gigi90
    Rispondo a tutti voi,

    A daniele_dll: Ho interpreato male la tua risposta

    Conosco sia PHP che AJAX, provenendo da Asp.NET e quindi dal .NET Framework li vi era un interno namespace di supporto ai Thread: System.Threading inoltre il webserver IIS ha un thread pool ossia una coda di thread a cui posso assegnare azioni(codice) da eseguire semplicemente utilizzando la classe Server e la Proprietà ThreadPool.

    Devo dire che PHP mi piace molto per mezzo della sua semplicità che lo rende estremamente potente, ma devo ammettere che se devi fa cose particolari, alcune volte tali cose non sono supportate .
    Immaginavo provenissi dal .NET ( Per via dell'insistenza dell'uso dei thread, sono pochissimi i linguaggi per il Web che ti permettono di farlo )

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 © 2025 vBulletin Solutions, Inc. All rights reserved.