[PHP] Contatore Tempo Server-side

Melaz Entertainment

Nuovo Utente
23 Ott 2017
6
0
1
8
Ciao a tutti, è 2-3 giorni che cerco di risolvere il seguente problema, documentandomi su internet, ma non sono riuscito a trovare una soluzione.

Su internet ho trovato di tutto, PHP+javascript, sopratutto, ma alcuni non riesco a farli funzionare, e in ogni caso, sono tutti codici che funzionano perchè stampano a video il tempo che passa.

Ho bisogno di un Contatore di Tempo (server-side, per quello ho puntato sul PHP). Questo contatore non deve essere visualizzato da nessuna parte, o meglio non sul lato client. Deve essere un contatore che ha vita propria, ossia non deve partire per una qualsiasi azione dalla parte client. Il tempo trascorso deve essere inserito in una variabile, che utilizzerò per altre funzioni.

Spiegandomi meglio: il contatore deve contare da zero, fino a quando raggiunge una durata massima che viene recuperata dal database. Nel momento in cui il contatore arriva alla durata massima, deve prendere un altra "durata massima" dal database e ripartire da zero fino alla nuova durata massima e così via.

In sostanza, dovrebbe funzionare come se fosse un player "invisibile".


Grazie in anticipo a tutti
 
PHP:
sleep(4);
Attende 4 secondi prima di effettuare qualsiasi azione... spiegati meglio!

Lo sleep lo conosco come metodo, ma non é quello che cerco. Deve essere un contatore che conta a step di 1 secondo e la condizione a cui si trova ad ogni step deve finire in una variabile per essere confrontato. Come dire... un timer che gira, e una funzione che controlla quanto tempo é passato da quando è partito da zero
 
mi sembra sia più semplice e con lo stesso risultato,

memorizzare in una variabile il timer all'inizio del processo,
quando serve ottenere la differenza con il timer corrente misurata in secondi
ed eventualmente arrotondando al secondo la differenza per difetto/eccesso
 
Ciao,
se non ho capito male, a te serve un contasecondi, una sorta di cronometro, che mosri i secondi che passano; per fare questo però ti serve un linguaggio client-side tipo javascript o jQuery (questo è un piccolo esempio avevo provato a realizzare pere un mio progetto); però non ho capito esattamente la funzione di questo timer, dopo tot secondi deve compiere una determinata azione (es. resettare un campo??)


Zorro
 
Ultima modifica:
Ciao,
se non ho capito male, a te serve un contasecondi, una sorta di cronometro, che mosri i secondi che passano; per fare questo però ti serve un linguaggio client-side tipo javascript o jQuery (questo è un piccolo esempio avevo provato a realizzare pere un mio progetto); però non ho capito esattamente la funzione di questo timer, dopo tot secondi deve compiere una determinata azione (es. resettare un campo??)


Zorro

Ciao Zorro, grazie per la risposta. In realtà è proprio il contrario, deve essere solo server-side, deve avere vita propria, e non deve essere visibile client-side. Praticamente dovrebbe funzionare come un contatore di tempo che parte da zero (una volta avviato la prima volta, poi va in loop all'infinito) e arriva ad una durata che viene recuperata dal database. Arrivato a quella durata, recupera un'altra durata dal db, si resetta a 00:00 e conta fino alla nuova durata. E così via...

mi sembra sia più semplice e con lo stesso risultato,

memorizzare in una variabile il timer all'inizio del processo,
quando serve ottenere la differenza con il timer corrente misurata in secondi
ed eventualmente arrotondando al secondo la differenza per difetto/eccesso

marino51, intendi utilizzando la funzione sleep? Con lo sleep è possibile recuperare quanto tempo è passato da quando si è attivato? Cioè c'è una funzione che me lo richiama direttamente o devo usare un altro metodo?
 
Ultima modifica:
Forse è meglio che spieghi la finalità del timer. Praticamente è come se fosse un player video in streaming, che però non stremma, ma recupera la URL del video e la sua durata nel db,e dalla parte client-side, quando aprono la mia pagina del player e cliccano Play, tutti devono poter vedere lo stesso punto dello stesso video. Quindi l'unico modo a cui ho pensato è appunto un timer server-side, che gira in continuazione aggiornandosi ogni secondo, contando i secondi da zero fino alla durata massima del video. Ogni step viene salvato in una variabile che il player legge: quando dal client-side qualcuno schiaccia il play, viene letta la variabile e il player si dice da solo: "hey devo partire dal minuto 2 e secondi 3"(oppure semplicemente in secondi). E come detto prima più volte, ad ogni fine di un video, recupra un'altra URL, si azzera e riparte a contare
 
Cioè c'è una funzione che me lo richiama direttamente o devo usare un altro metodo?
PHP:
<?php
$di = new DateTime();  // timer alla partenza

sleep(5);  // qui viene eseguito il lavoro simulato con il trascorrere di un tempo

$df = new DateTime(); // timer alla fine del lavoro

$interval = $df->diff($di); // differenza tra i due time

echo $interval->format("%s secondi"); // stampa della differenza
?>
 
Ultima modifica:
hai pensato di usare i cron con UNIX?
Ti segnalo che Laravel ha lo scheduler, quindi potresti pizzicare Laravel affinché il tuo processo funzioni correttamente....
 

Discussioni simili