2009-06-04 7 views
6

Un cliente vorrebbe che aggiungessi il proprio stream Twitter alla home page del proprio sito Web, utilizzando una soluzione personalizzata sviluppata in PHP.Qual è il modo migliore per utilizzare l'API di Twitter tramite PHP?

L'API di Twitter ha ovviamente un numero limitato di chiamate che è possibile effettuare all'ora, quindi non posso eseguire il ping automaticamente su Twitter ogni volta che qualcuno aggiorna la home page del mio cliente.

Al momento il sito Web del cliente è puramente HTML e quindi è disponibile senza database. La mia soluzione deve quindi richiedere solo PHP e il file system locale (ad esempio, il salvataggio di un file XML locale con alcuni dati al suo interno).

Quindi, dati questi criteri limitati, qual è il modo migliore per accedere all'API di Twitter - tramite PHP - senza superare il limite di chiamate API entro pochi minuti?

+0

Giusto per chiarire: Non sto chiedendo alla gente di scrivere questo per me! :) È da tanto che non faccio PHP, quindi cerco di imparare le migliori pratiche per affrontare questo problema molto particolare. Molte grazie in anticipo per eventuali approfondimenti o suggerimenti. – markedup

+0

"File system locale" - questo sarebbe il server stesso. "Sever setup" - Non riesco a toccare nient'altro che cosa sia raggiungibile tramite FTP (quindi nessun cPanel o cron, ecc.). – markedup

+0

Spiacenti, "Configurazione Sever" dovrebbe essere "Configurazione server". – markedup

risposta

3

Sarà abbastanza facile, una volta che si può tirare giù una timeline e visualizzarlo, per poi aggiungere un po 'di file-based caching ad esso.

check age of cache 
Is it more than 5 mins old? 
    fetch the latest information 
    regenerate the HTML for output 
    save the finished HTML to disk 
display the cached pre-prepared HTML 

PEAR's Cache_Lite farà tutto ciò che serve sul livello di caching.

0
  1. un job cron (non likley - se non c'è anche un database, allora non ci sono posti di lavoro cron)
  2. scrivere la microtime() in un file. in una visualizzazione di pagina confronta il timestamp corrente con quello salvato. è la differenza maggiore di N minuti, tira il nuovo tweetfeed e scrivi il timestamp corrente sul file
  3. se la pagina anteriore è un file html statico che non chiama alcun php, include un'immagine <img src="scheduler.php"/> che restituisce un gif trasparente 1p (a almeno hai fatto in questo modo quando ero giovane) e fa il vostro twitter-tirando in silenzio

o vuoi dire locale filesystem -local, come in "il mio/il computer clienti non il server" -local?

in questo caso:

  1. get alcuni server con un job cron o scheduler e PHP
  2. scrivere uno script che legge e salva il feed in un file
  3. scrivere il file sul server i clienti utilizzando FTP
  4. visualizza il feed utilizzando javascript (sì, ajax funziona anche con file statici come origini dati). jquery o qualche lib è grande per questo
  5. o: creare il file html Tweet-visualizzazione a livello locale e caricarlo (ma attenzione ... perché si può sovrascrivere aggiornamenti sul server)

imo: per le piccole i siti spesso non hanno comunque bisogno di un database sql completamente sviluppato. i filesystem sono fantastici. una combinazione di scandir, preg_match e nomi di file scelti con cura sono spesso sufficienti.
e si può effettivamente fare un sacco di elaborazione front-end (come la visualizzazione di XML) usando bellissimi javascript.

0

Dato che non conosciamo la configurazione del server, ti suggerisco di impostare un processo cron (assumendo il tuo su una macchina Linux). Se hai qualcosa come cPanel su un ambiente di hosting condiviso piuttosto che non dovrebbe essere un grosso problema. Devi scrivere uno script che viene chiamato da cron e che otterrà gli ultimi tweet e li scriverà in un file (xml?). È possibile pianificare cron per l'esecuzione ogni 30 minuti. o cosa vuoi mai.

0

Si consiglia di utilizzare TweetPHP di Tim Davies. http://lab.lostpixel.net/classes/twitter/ - Questa classe ha molte funzionalità tra cui quella che si desidera, che mostra la linea temporale dei clienti. La pagina mostra buoni esempi su come usarlo.

È quindi possibile inserire l'output di questo in un file o database. Se si desidera che il visitatore del sito aggiorni il database o il file come ogni 5 minuti, è possibile impostare una variabile di sessione contenente un timestamp e consentire solo un altro aggiornamento se il timestamp era almeno 5 minuti fa.

Spero che questo aiuti

0

Il mio suggerimento: Creare un piccolo oggetto semplice per contenere la data della cache e una serie di tweet. Ogni volta che qualcuno visita la pagina, esegue la seguente logica:

A) Il file esiste?

Sì: Leggi in una variabile No: Procedere al passo D)

B) unserialize la variabile (La coppia PHP serialize()/unserialize() farebbe bene)

C) Confronta l'età della cache memorizzata con l'ora corrente (un timestamp Unix lo farebbe) I suoi oltre 5 minuti l'uno dall'altro:

D) Ricevi i tweet più recenti da Twitter, aggiorna l'oggetto, serializza e scrivi in di nuovo il cache. Conserva anche i tweet più recenti per la stampa. Non proprio: basta leggere i tweet dalla cache.

E) Stampare i tweets

semplice e modo più semplice per serializzare l'oggetto è il serialize()/unserialize() coppia. Se non sei disposto a rimandare lo sforzo per creare l'oggetto, potresti semplicemente usare l'array 2D, serialize() funzionerà perfettamente. Dai uno sguardo a http://php.net/serialize

Considerando che non hai accesso a cPanel, è la soluzione migliore dato che non avrai accesso a pacchetti PEAR, cron o altre soluzioni più semplici.

0
array(
'lastrequest' => 123, 
'tweets' => array() 
) 

ora nel codice mettere un controllo per vedere se il timestamp nel datastore per lastrequest è più di X secondi vecchio. Se è quindi il momento di aggiornare i tuoi dati.

serializzare e conservare la matrice in un file, piuttosto semplice

Problemi correlati