Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114

    [PHP] Lancio script in background

    Ciao...
    ho la necessità di far lanciare da una pagina PHP (richiamata in seguito a delle azioni svolte da un utente) uno script in background sul server.

    Attualmente tramite il comando system() richiamo e lancio un file php ma, non essendoci il multithreading in PHP, questo mi viene eseguito al momento della chiamata in maniera esclusiva e restituisce il controllo allo script chiamante solo una volta terminato. Io invece vorrei che lo script chiamante continuasse nel proprio lavoro indipendentemente dall'esecuzione dello script richiamato, il quale deve lavorare separatamente (per l'appunto in background).

    Ho provato anche ad usare il seguente script, ma il risultato non è cambiato ($param è un parametro che devo passare allo script e che gestisco tramite $argv[]).
    Codice PHP:
    system("/usr/bin/php bg.php $param >/dev/null &"); 
    In definitiva: come posso lanciare uno script in background sul server con PHP?

    Grazie!

  2. #2
    devi usare ajax, che fa eseguire uno script php in backgound, ma se cambi pagina comunque interromperà il lavoro dello script.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114
    Beh, allora non è proprio indicato per il mio caso

    In pratica ho una pagina web nella quale gli utenti si "registrano" ad un "evento" il quale deve iniziare quando si è raggiunto il numero di iscritti massimo e deve terminare una volta esaurita la sua durata. Lo script di background deve partire quando l'ultimo utente si iscrive e fermarsi solo quando l'evento finisce; in pratica il suo scopo è quello (tra le tante cose che dovrà fare) di controllare che la durata dell'evento sia ancora valida o scaduta (in quest'ultimo caso lo script morirà) ed interagire col database.
    Lo script deve perciò essere valido per tutti gli utenti i quali, in base ai ruoli, avranno interazioni differenti con l'evento.

  4. #4
    Se il tuo servizio di hosting supporta la modifica della crontab, puoi effettuare una chiamata ad uno script php che verifica quanto da te richiesto, ad esempio, ogni minuto.

    Dai una occhiata a questa guida: http://forum.html.it/forum/showthrea...hreadid=310412

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114
    Originariamente inviato da Toxik
    Se il tuo servizio di hosting supporta la modifica della crontab, puoi effettuare una chiamata ad uno script php che verifica quanto da te richiesto, ad esempio, ogni minuto.

    Dai una occhiata a questa guida: http://forum.html.it/forum/showthrea...hreadid=310412
    Purtroppo neppure Crontab (che sinceramente non conoscevo) fa al caso mio in quanto la periodicità non è costante per due ragioni:
    1. non necessariamente ci sono eventi "attivi"
    2. la durata di uno step dell'evento non è sempre uguale ed il suo valore è memorizzato in un database. Tra l'altro un evento è composto da più step.

  6. #6
    Aspetta, spiegami bene cosa fai con questi eventi e cosa vorresti fare in background...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114
    Allora li ho chiamati "eventi" per generalizzare, per correttezza lo chiamo "gioco", comunque di fatto il tutto dovrebbe funzionare così:
    - gli utenti si registrano al "gioco"
    - quando gli utenti registrati raggiungono il numero voluto il "gioco" si avvia
    - viene modificato un flag nel db, quindi dovrebbe partire il gioco, il quale è diviso in fasi, ognuna delle quali di una durata prefissata nel db (scelta di volta in volta dall'amministratore)

    il compito dello script di background è quello di controllare che una fase del gioco sia ancora attiva e non scaduta, altrimenti (se scaduta) aggiornare il database modificando la fase terminata con quella seguente. Una volta terminato il game (fase finale) lo script deve finire, così che un nuovo gioco possa iniziare ed avviare un altro demone.

    La necessità del controllo in background sta nel fatto che tutti gli utenti debbano essere sincronizzati con le fasi del gioco.

    Non so se mi sono spiegato.

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.