Contenido

Pon listas de Last.fm en tu web con PHP

19 Jun

+ 3

Carlos de Lostkore,  me avisa de que ha escrito un pequeño tutorial de como conseguir integrar nuestras listas de Last.fm en nuestras aplicaciones web mediante PHP. Con ello podremos dotar nuestrá página de un valor añadido extra con el que engatusar a nuestros usuarios.

<?php
function get_remote_file($url, $timeout = 10) {
	$ch = curl_init();
	curl_setopt ($ch, CURLOPT_URL, $url);
	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
	$file_contents = curl_exec($ch);
	curl_close($ch);
	return ($file_contents) ? $file_contents : FALSE;
}
$usuario = “colapsonervioso”;
$datos = get_remote_file(”http://ws.audioscrobbler.com/1.0/user/$usuario/recenttracks.txt“);
$datos = utf8_decode($datos);
$linea = explode(”\n”, $datos);

echo “<ul id=\”lastfm\”>”;
for ($i = 0; $i < 10; $i++) {
	$parte = explode(”,”, $linea[$i]);
	echo “<li>”.str_replace(”?”,”-”,$parte[1]).”</li>”;
	}
echo “</ul>”;
?>

En el ejemplo que Carlos nos muestra, usamos el formato “Plain” (Texto) del API de Last.fm. Al que mediante la ruta,

http://ws.audioscrobbler.com/1.0/user/$usuario/recenttracks.txt

reemplazaremos $usuario por el usuario que deseemos cargar.

Con esto y un poco de imaginación se podría crear una aplicación realmente interesante.

Benchmarks de PHP ¿Que usar en cada momento?

5 Jun

+ 4

Hoy Luis Sacristan de Sentido Web ha publicado un artículo muy interesante sobre el rendimiento de PHP en algunos casos concretos. Usando los resultados de The PHP Benchmark, Luis saca unas conclusiones que deberemos tener siempre en cuenta.

  • Realizar un foreach es siempre más rápido, y si no recuperamos la clave del array mejor aún.
  • Un for es más rápido si no calculamos previamente en una variable el tamaño del array que recorremos, y que sizeof es más rapido que count.
  • Cuando vamos a asignar el valor de una posición de un array a una variable para tratar con ella, es conveniente hacerlo por referencia ($alias = &$aSingleDimArray[$i]).
  • No es más rápido crear un objeto como referencia ($obj =& new SomeClass();).
  • if es más rápido que switch/case, y ligeramente más rápido es usar == que ===.
  • Parece ser que el uso de comilla simple o doble en las últimas versiones se ha mejorado y no existe apenas diferencia.

¿Por qué la mascota de PHP es un elefante?

3 Jun

+ 22

php-logo-php-721782
Genial

30 componentes y clases PHP muy útiles

2 Jun

+ 7

Siempre es bueno conocer la existencia de componentes o clases para ahorrarnos tiempo y trabajo a la hora de desarrollar nuestras aplicaciones. Esta lista de 30 componentes y clases desarrolladas en PHP y para PHP nos pueden ser muy útiles:

Continua —>

Cuidado con los saltos de línea en el código

22 May

+ 11

Desde AyudaWordpress nos comentan las peripecias que tuvieron que realizar para solucionar unos problemas con Wordpress 2.5.1. Todos ellos debidos a un pequeño salto de línea despues del código de finalización de PHP.

<?php
.. codigo ..
?>
(Salto de línea)

Esto generamente se debe a un problema de configuración del servidor web. Yo tuve problemas similares al cambiar de Apache a Nginx, scripts que habían funcionado perfectamente, dejaban de hacerlo únicamente por que Nginx lanza las peticiones PHP contra el sistema y Apache no.

Esto demuestra que no solamente hemos de ser cuidadosos con el código que hacemos, con el consumo de memoria y recursos, sinó que además hemos de tener especial cuidado en los saltos de línea para evitar problemas de estos. Nunca podemos saber en que servidor acabará usandose nuestra aplicación, por ese motivo hemos de ser lo más cuidadoso posible.

Para que luego vengan los clientes y te digan “Pero si solo es programar….”.

Reducir ficheros javascript desde PHP

6 May

+ 5

Marcos Fernandez ha publicado un didáctico tutorial en el que nos muestra como reducir el peso de nuestra página mediante la fusión de ficheros Javascript desde PHP. Usando la herramienta Jsmin-php, conseguimos hacer que nuestros X ficheros Javascript, se conviertan unos solo. Podemos verlo tambien en este video-tutorial.

Class.image, imagenes más fáciles con PHP

19 Feb

+ 1

Dani nos deleita con una clase con la que manipular imagenes en PHP, una interpretación muy sencilla y cómoda de trabajar con la librería GD.

PHP.js, Javascript con nomenclatura PHP

1 Feb

+ 3

Si eres un amante de PHP, y estás haciendo cosillas con Javascript, estás de suerte por que PHP.js, te hará que la tarea de desarrollar en Javascript sea más cómoda, aportando una serie de funciones que dotarán a tus scripts de las funciones más usadas de PHP.

addslashes()

[Link]

function addslashes( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Ates Goral (http://magnetiq.com)
    // *     example 1: addslashes("kevin's birthday");
    // *     returns 1: "kevin\\'s birthday"
    // *     example 2: addslashes("\"'\\\0");
    // *     returns 2: "\\\"\\\'\\\\\\0"

    return str.replace(/(["'\\])/g, “\\$1″).replace(/\0/g, “\\0″);
}

include()

[Link]

function include( filename ) {
    // http://kevin.vanzonneveld.net
    // +   original by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Legaev Andrey
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: include('/js/imaginary1.js');
    // *     returns 1: 1

    var js = document.createElement('script');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src', filename);
    js.setAttribute('defer', 'defer');
    document.getElementsByTagName('HEAD')[0].appendChild(js);

    // save include state for reference by include_once
    if (!window.php_js) window.php_js = {};
    if (!window.php_js.includes) window.php_js.includes = {};
    if (!window.php_js.includes[filename]) {
        window.php_js.includes[filename] = 1;
    } else {
        window.php_js.includes[filename]++;
    }

    return window.php_js.includes[filename];

}

El listado de funciones asciende a 92, lo que comienza a ser un buen set de herramientas para nuestros scripts. 

[Descargar

Consejos para mejorar la velocidad de nuestros scripts PHP

19 Nov

+ 11

Algo que los desarrolladores debemos conocer es como hacer más optimo nuestro trabajo y aunque no siempre podamos (o sepamos) elegir la mejor opción para obtener mejores tiempos de respuesta y de procesamiento, nunca está de más conocerlos y mirar de ponerlos en práctica cuando podamos.

En PHP, hay muchas formas de hacer las cosas, pero unas son mejores que otras, en este artículo vemos cuales son algunas de esos métodos que usamos y que podríamos optimizar.

1. Multiples argumentos a echo()

echo() es una función, aunque un poco peculiar, y por ello debemos usar la forma más correcta de usarla.

//Lento
echo “hola” . $var . “adios”;
//Rápido
echo “hola” , $var , “adios”;
//resultados
Time for concatenation method: 37.83755 seconds
Time for multiple arguments method: 37.68789 seconds
Time saved: 0.15966 seconds; 0.396%

Si analizamos lo que está pasando aqui, es que en la primera llamada, además de mostrar por pantalla con echo(), estamos haciendo que se concatenen las 2 cadenas, mostrando el resultado. Algo que en este ejemplo no es significativo, pero que en ciertos proyectos con grandes cantidades de concatenaciones puede llegar a notarse la diferencia.

Por cierto, echo() es más rápido que print().

2. Reduce las llamadas a funciones

Es algo obvio, pero a veces no tenemos presentes que el llamar a funciones ocupamos una pequeña porción de procesador en interpretarlas, y por poco que sea, podemos ahorrarnos una cantidad perceptible de recursos.

$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
for($a = 0; $a < sizeof($array); $a++) {
	// Do something
}
//Resultados
Test 1 (sizeof() called 10, 001 times): 0.02784 seconds
Test 2 (sizeof() called 1 time): 0.01278 seconds
Time saved: 0.01506 seconds; 54.095%

10.000 iteraciones han hecho posible estos resultados.

3.Usa las variables cuando sean necesarias

El usar variables consume memoria, es evidente que se almacenan en algún sitio y ese sitio es la memoria del server. En muchos casos recurrimos a este sistema para hacer más fácil la parametrización de nuestros scripts:

$string = 'String for Output';
echo $string;
//Mejor así
echo ‘String for Output’;

 Esto nos da la flexibilidad de poder cambiar el contenido de nuestra variable sin tener que modificar el echo(), muy util para separar la configuración de la lógica de la aplicación. Pero en algunos casos algo innecesario. Si necesitamos usar este sistema, podríamos recurrir a unset() para eliminar la variable de memoria cuando terminemos de usarla.

4. Usa comillas simples

Esta no la sabía, siempre suelo usar comillas simples, pero es por los strings de Oracle y cogí el vicio. Al parece el usar comillas simples es más optimo que usar las dobles, esto es debido al sistema de parseo interno de PHP, y la forma de tratar las diferentes comillas.

//Mejor
$string = ‘Hello’;
//Peor
$string = “Hello”;
//Resultados
Double Quotes: 51.74447 seconds
Single Quotes: 51.38412 seconds
Time saved: 0.36035 seconds; 0.696%

Se han asignado 50.000.000 de veces una variable para obtener estos tiempos. 

5.str_replace() vs ereg_replace() y preg_replace()

Entre estas 3 funciones str_replace() se desmarca sobre las demás debido a que no está pensado para funcionar con expresiones regulares y realizar su función mucho menor tiempo.

ereg_replace(): 26.65647 seconds
preg_replace(): 25.18324 seconds
str_replace(): 10.26872 seconds
Time saved (against ereg_replace()): 16.38775 seconds: 61.478%
Time saved (against preg_replace()): 14.91452 seconds: 59.224%

Las pruebas se han hecho reemplazando una palabra 5.000.000 de veces con cada una de las funciones.

¿Como hacer mis propias mediciones?

 Lo mejor para saber que usar y optimizar nuestros scripts sin duda es probarlo nosotros mismo, hacer las mediciones pertinentes. Para ello usaremos la función microtime() que nos permite obtener una marca de tiempo en micro-segundos para poder contabilizar el tiempo de ejecución de nuestras funciones.

$tiempo_inicio = microtime(true);

mifunciondelaostia();

$tiempo_final = microtime(true);
$tiempo = $tiempo_final - $tiempo_inicio;

echo "Ha tardado",$tiempo segundos;

40 consejos para optimizar tu código PHP

16 Oct

+ 4

Si eres desarrollador en PHP, seguro que valorarás esta lista de 40 consejos que te ayudará a tener presente esas cosillas que pueden hacer que la aplicación deje de ser una simple aplicación y se convierta en maravilla.