Simulare lo streaming video

Schedulazione ed aggiornamento

La procedura batch l’ho impostata tra le attività pianificate di windows con cadenza di ogni 5 minuti. Il risultato è che ogni 5 minuti tutte le immagini bitmap presenti nella cartella vengono trasformate in una unica gif animata e poi vengono cancellate le immagini processate.

Ci manca adesso caricare l’immagine animata rappresentante la nostra realtà (degli ultimi 5 min. sul sito).

Per fare questo ho creato un altro batch denominato carica_ftp.bat che è predisposto a questo semplice compito:

ftp
open ftp.mysite.com
ftp_user_name
ftp_user_pass
prompt
binary
cd images
cd wait
put C:\ScreenCapture\Channel1\img.gif
close
quit

Tutto chiaro? No? Beh… eseguo il comando ftp dal prompt dei comandi, poi eseguo una sequenza di comandi ftp per interagire col server: “open” per stabilire una connessione con un sito ftp, passa successivamente nome utente e password in sequenza (e purtroppo in chiaro), forza il prompting interattivo, imposta la modalità di trasferimento in binario, si posiziona nella cartella /images/wait edi n fine fa l’upload della gif precedentemente generata sul server.

Se a questo punto andassi sul mio sito a consultare l’immagine www.mysite.com/images/wait/img.gif il risultato sarebbe quello desiderato: abbiamo un’immagine on-line.

Interazione

Ok il nostro tutorial sembra essere finito… ma… dove è il PHP? Non era un tutorial per il PHP? Certo! Fino ad ora abbiamo eseguito una preparazione dello scenario. Adesso viene la parte dura!

Come dicevo prima se noi consultiamo il sito all’url www.mysite.com/images/wait/img.gif, vediamo la nostra gif animata.

Proviamo a consultarla durante l’upload: il risultato è un immagine danneggiata, parziale o una bella X proposta dal browser in alternativa all’immagine. Non è certo questa una soluzione a mio avviso accettabile!

Bene! Allora andiamo a fare delle considerazioni: se un utente ha chiesto al server di vedere il paesaggio in tempo reale, il server dovrà dare la disponibilità SEMPRE di un immagine (in tempo quasi reale), quindi bisogna avere continuamente a disposizione un file per la consultazione.

Domanda: Come possiamo evitare che un file di cui stiamo facendo l’upload non venga preso dal server e mandato in pasto all’utente che ne fa richiesta?

Bene cerchiamo di rispondere a questo problema con un esempio più semplice: vado ad un bar dove vengono preparati caffè in continuazione, arrivo al bancone e di certo non prenderò la tazzina vuota e tanto meno prenderò la tazzina in cui viene versato il caffè, ma prenderò quella che è già pronta sul bancone. Nel frattempo il barista preleverà le tazzine vuote di cui si è fatto già uso purchè ne restino sempre due disponibili una che potenzialmente un frequentatore del bar starà bevendo e l’altra in attesa di essere bevuta. E’ chiaro il discorso che si dovrà implementare?

In pratica dovremo costruire una pagina PHP che guarda quante immagini ci sono in una cartella, se le immagini sono 3: la prima corrisponde al passato, la seconda corrisponde al presente e la terza è il futuro: cioè quello che stiamo caricando. Se esiste il futuro, allora posso cancellare il passato e resteranno due immagini sul sito: l’utente guarderà sempre la prima corrispondente al presente.

Vediamo il flusso come andrebbe:

  • Parto con img1.gif sul sito
  • Il sistema riconosce che c’è solo img1.gif quindi mette a disposizione img1.gif all’utente che la richiede
  • Faccio l’upload di img2.gif (Upload in corso)
  • Utente richiede immagine: Il sistema si accorge che ci sono due files ma non fa nulla e mette a disposizione img1.gif all’utente che la richiede
  • Upload terminato per img2.gif
  • Utente richiede immagine: Il sistema si accorge che ci sono due files ma non fa nulla e mette a disposizione dell’utente che la richiede img1.gif (per il sistema img2.gif non è ancora disponibile)
  • Faccio l’upload di img3.gif (Upload in corso)
  • Utente richiede immagine: Il sistema si accorge che ci sono tre files e quindi rimuove img1.gif e mette a disposizione dell’utente img2.gif

E proesegue sempre così: img2 diventerà a questo punto img1 ed img3 diventerà img2 così al successivo upload le immagini saranno sempre 3. Il nostro barista fa il suo dovere!


Pubblicato

in

,

da

%d blogger hanno fatto clic su Mi Piace per questo: