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

    Eseguire una Pagina in Background

    Salve,
    come da titolo, vorrei far partire l'esecuzione di una pagina PHP che continui ad elaborare i dati indipendentemente dalla chiusura della pagina sul browser..
    Spiego cosa voglio fare così magari riuscite anche a darmi soluzioni alternative..
    In pratica possiedo un gestionale e vorrei mettere a disposizione una demo per i clienti, il problema sorge dal fatto che ogni cliente deve avere una cartella (folder) personale con tutti i files del gestionale e, ovviamente, un database personale..
    Il tutto so che è fattibile con PHP, ma mi chiedo come fare per non far tenere all'utente la pagina web aperta durante l'elaborazione, vorrei che l'utente inviasse soltanto l'input e che poi il server esegua tutto in background, per poi finire con un'email che avvisa il cliente che la demo è pronta.

    PS: Sono intenzionato ad affittare un Droplet presso la Digital Ocean

  2. #2
    dovresti configurare un task (cronjob) che in caso di hosting gratuito non credo sia un servizio messo a disposizione, mentre qualcosa riesci a fare dai pannelli di amministrazione che mettono a disposizione i siti di hosting a pagamento (anche italiani).

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Non penso sia esattamente ciò che gli serve.
    Cronjob esegue script in base a data e ora, mentre se ho ben capito a lui lo script deve partire a seguito della richiesta dell'utente e continuare anche in caso di chiusura del browser, cosa che credo succeda di default senza dover fare niente, il server non se ne accorge se l'utente chiude il browser e lo script che sta eseguendo continua ad eseguirlo.
    Dovrebbe quindi bastare aggiungere l'invio email alla fine dello script e questa sarà inviata, anche se il browser viene chiuso, ovviamente l'esecuzione dello script non deve eccedere il timeout impostato sul server, nel qual caso lo script viene bloccato e l'email non parte.

  4. #4

  5. #5
    E io proverei anche ad aggiungere un processo a livello di DB (record) che identifichi l'utente (id) e con un campo (process) che, impostato a 0 di default segnala l'esito negativo, impostato a 1 segnala l'esito positivo. Una volta che l'utente riaccede controlli il campo e se terminato lo elimini direttamente o crei uno script che lo elimina dopo X tempo.

  6. #6
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Non penso sia esattamente ciò che gli serve.
    Cronjob esegue script in base a data e ora, mentre se ho ben capito a lui lo script deve partire a seguito della richiesta dell'utente e continuare anche in caso di chiusura del browser, cosa che credo succeda di default senza dover fare niente, il server non se ne accorge se l'utente chiude il browser e lo script che sta eseguendo continua ad eseguirlo.
    Dovrebbe quindi bastare aggiungere l'invio email alla fine dello script e questa sarà inviata, anche se il browser viene chiuso, ovviamente l'esecuzione dello script non deve eccedere il timeout impostato sul server, nel qual caso lo script viene bloccato e l'email non parte.
    Esattamente..!
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Perfetto..!
    Grazie mille
    Quote Originariamente inviata da hypertextPro Visualizza il messaggio
    E io proverei anche ad aggiungere un processo a livello di DB (record) che identifichi l'utente (id) e con un campo (process) che, impostato a 0 di default segnala l'esito negativo, impostato a 1 segnala l'esito positivo. Una volta che l'utente riaccede controlli il campo e se terminato lo elimini direttamente o crei uno script che lo elimina dopo X tempo.
    Esattamente.. Questo avevo già pensato di farlo per essere sicuro che sia andato tutto a buon fine..
    Ma avevo pensato di auto-invirmi un'email ad inizio ed a fine processo, in modo tale da sapere quando è iniziato il processo e poterlo eventualmente seguire..
    Ultima modifica di Luigi636; 05-09-2017 a 09:57

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    ignore_user_abort()

    Serve solo da console, altrimenti è come ha detto Alhazred, lo script continua anche se tu chiudi il browser.

  8. #8
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    ignore_user_abort()
    Serve solo da console,
    Non mi risulta.
    ignore_use_abort() non è utile soltanto eseguendo script dalla linea di comando.

    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    lo script continua anche se tu chiudi il browser.
    Questo è vero solo se lo script non invia mai dati al client.

    Se durante l'esecuzione dello script PHP il server invia dati al client e il client è disconnesso, l'esecuzione dello script viene terminata a meno che non sia impostato un ignore_user_abort(true).

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Certo hai perfettamente ragione, lo script non deve inviare dati al client altrimenti si blocca.

    Però non credo che in questo caso debba farlo, quindi io non userei ignore_use_abort(), non ho mai avuto la necessità di usarlo su script web, per quello dicevo che non serve.

  10. #10
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Certo hai perfettamente ragione, lo script non deve inviare dati al client altrimenti si blocca.

    Però non credo che in questo caso debba farlo, quindi io non userei ignore_use_abort(), non ho mai avuto la necessità di usarlo su script web, per quello dicevo che non serve.
    Nessuno di noi due conosce lo script, comunque basterebbe anche un singolo warning lanciato dall'interprete per interrompere l'esecuzione.
    Visto che si tratta di una singola riga di codice, perché non usarlo?

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.