Contenido

User twitter para controlar los errores de tus apps

18 Mar

+ 10

Lo que no se pueda hacer con twitter no se puede hacer con ninguna otra aplicación y es que es una idea tan simple que cualquier idea se puede adaptar a él.

Lo último es usarlo como log de errores de aplicaciones, y en un principio pensé:

No creo que ayude a nadie que entre «Me voy a comer!!» y «Acabo de llegar a casa, que cansado estoy» veamos un «Error en aNieto2k – El login introducido es incorrecto».

Pero profundizando más en la idea, puede ser interesante, tener un usuario recopilatorio en el que meter todos los errores detectados en todas tus aplicaciones. O incluso enviarte mensajes directos usando la api de Twitter.

function tweet_error ($error, $description) {
	$username = 'yourusername';
	$password = 'yourpassword';
	$status = "#$error - $description";

	$update_url = 'http://www.twitter.com/statuses/update.xml'; // http://identi.ca/api/statuses/update.xml will use identi.ca instead.

	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, "$update_url");
	curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_POST, 1);
	curl_setopt($curl, CURLOPT_POSTFIELDS, "status=$status");
	curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");

	$result = curl_exec($curl);
	$resultArray = curl_getinfo($curl);

	curl_close($curl);

	return ($resultArray['http_code'] == 200);
}
// Modo de empleo
tweet_error("404", $_SERVER[SCRIPT_URL]);

Si queremos enviar un mensaje directo tendremos que modificar un poco la función.

function tweet_error($error, $description, $user) {
	$username = 'yourusername';
	$password = 'yourpassword';
	$status = "#$error - $description";

	$update_url = 'http://twitter.com/direct_messages/new.xml';
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, "$update_url");
	curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_POST, 1);
	curl_setopt($curl, CURLOPT_POSTFIELDS, 'user='.urlencode($user)."text=$status");
	curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");

	$result = curl_exec($curl);
	$resultArray = curl_getinfo($curl);

	curl_close($curl);

	return ($resultArray['http_code'] == 200);
}
// Modo de empleo
tweet_error("404", $_SERVER[SCRIPT_URL], "anieto2k");

Si a esto le añadimos el uso de set_error_handler() de php podemos conseguir que nos avise automáticamente de los errores que se está produciendo en nuestras aplicaciones.

function tweet_error ($num_err, $cadena_err, $archivo_err, $linea_err) {
	$username = 'yourusername';
	$password = 'yourpassword';
	$status = "#$num_err - $cadena_err ($archivo_err:$linea_err)";

	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, 'http://www.twitter.com/statuses/update.xml');
	curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_POST, 1);
	curl_setopt($curl, CURLOPT_POSTFIELDS, "status=$status");
	curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");

	$result = curl_exec($curl);
	$resultArray = curl_getinfo($curl);

	curl_close($curl);

	return ($resultArray['http_code'] == 200);
}

set_error_handler("tweet_error");
// Parámetros enviados por el callback de set_error_handler ($num_err, $cadena_err, $archivo_err, $linea_err)

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.