WordPress: gestire gli errori PHP di Twitter

WordPress: gestire gli errori PHP di Twitter

Immaginate di aver creato un vostro plugin WordPress che visualizza i vostri ultimi tweet da Twitter utilizzando il feed JSON o RSS di Twitter tramite PHP. Nella vostra home page, accanto al logo, c'è ora un box che raccoglie i vostri tweet. Un bel giorno aprite la vostra home page e invece dei vostri tweet vedete un messaggio di errore PHP. Controllando i vostri file di log, scoprite anche che la stessa stringa di errore si ripete frequentemente almeno una volta al giorno per giorni e giorni. Cos'è successo? Twitter era probabilmente down e quindi non ha potuto soddisfare la vostra richiesta HTTP. Per fortuna PHP ci permette di gestire situazioni come questa tramite gli error handler (gestori di errori). Vediamo come.

Quasi tutti gli errori generati da Twitter sono warning (costante E_WARNING) ossia errori che PHP riesce a gestire senza interrompere l'esecuzione dello script. Possiamo creare una nostra funzione che andrà a gestire questo tipo di errori. La funzione andrà quindi passata alla funzione PHP set_error_handler():


function twitter_error_handler($errno, $errstr) {

  $time = strftime('%d/%M/%Y %H:%M:%S', time());

  error_log("Errore Twitter: [$errno] $errstr $time", 1, 'qualcuno@esempio.it','From: webmaster@esempio.it');
}

set_error_handler('twitter_error_handler', E_WARNING);

Usiamo error_log() per inviarci un'email con i dettagli dell'errore e l'ora in cui l'errore è avvenuto. L'ora è quasi più importante dei dettagli dell'errore, perchè ci permette di verificare se il down è sporadico o qualcosa di continuato.

Il logging degli errori tramite e-mail è un'alternativa che io consiglio in quei casi in cui non abbiamo il pieno controllo del web server o non possiamo cambiare la posizione del file di log predefinito per gli errori PHP. In tutti gli altri casi è meglio impostare il file di log tramite il pannello del nostro server o tramite SSH.

La routine di cui sopra va posta prima delle altre routine del vostro script. Ad ogni modo, verificate sempre che il feed remoto sia disponibile prima di effettuare il parsing vero e proprio. Questo aumenterà di molto l'affidabilità del vostro codice.

Ricordate che Twitter è un web service, oltre che un social network. Ciò significa che in alcuni casi le sue risorse non sempre possono essere disponibili.

Riferimenti

  1. Error Handling and Logging (documentazione ufficiale PHP)
  2. PHP Error Handling (W3Schools)
  3. error_log() (documentazione ufficiale PHP)
Torna su