Perfil
martes, 21 de mayo de 2013
sábado, 18 de mayo de 2013
10 consejos para mejorar la visibilidad de una web
Puede que tengamos un sitio web fantástico, pero si nadie lo lee, todo nuestro trabajo será en vano. ¿CĂłmo podemos hacer para mejorar la visibilidad de un sitio web? Respuestas hay muchas, y en internet encontrarán varias alternativas. Algunos estarán más enfocados en tener una estrategia SEO friendly que pueda agarrar a los usuarios directamente por sus bĂşsquedas. Otros insistirán en la importancia del contenido propio, mientras que otros tambiĂ©n nos pedirán que -¡por favor!- no nos olvidemos del diseño de las páginas. La realidad es que todos ellos tienen razĂłn.
Por eso, pensamos en armar una pequeña guĂa que nos muestre cĂłmo podemos hacer para mejorar la visibilidad de un sitio web. Está basado, claramente, en nuestras experiencias, pero están más que bienvenidos a dejar sus sugerencias en los comentarios. Estamos tomando un poco de todas las opiniones, para tener una lista de recursos más variada pero igualmente rica para quienes quieran explorar todas las alternativas. Ahora sĂ, sin más, esta es nuestra humilde guĂa.
- Brinda contenido de calidad: hemos insistido en varias oportunidades sobre la importancia del contenido no solamente en sitios web, sino tambiĂ©n en redes sociales, o cualquier otro tipo de publicaciĂłn que tengamos en internet. Quizás sea el buscador el que nos lleva a un sitio, pero es el buen contenido el que nos hace quedarnos o volver con regularidad. Por ende, este es uno de los aspectos más importantes -si no el más importante- a la hora de mejorar la visibilidad de un sitio web. Proveer artĂculos de calidad, de desarrollo propio, es una excelente forma de arrancar.
- Actualiza tu contenido con regularidad: puede que tengamos contenido excelente, pero si solamente lo actualizamos una vez por mes, se irá todo a la basura. Esto está relacionado con las variables que son analizadas por los buscadores mientras están indexando los sitios, algo que vimos con más profundidad cuando repasamos SEO. En esta oportunidad, vale la pena repetir que con una estrategia de actualización de contenido fresco, relevante y único podemos ayudar a mejorar la visibilidad de un sitio web.
- Presta atención al diseño: por más que el SEO sea aquello que los buscadores prefieren, no debemos olvidar que son las personas las que deciden ingresar y quedarse en nuestro sitio -más gracias a la funcionalidad de preview de Google-. Ahora bien, si esa persona, para poder acceder al contenido de calidad que enumeramos en el punto uno, tiene que leerlo en Times New Roman tamaño 9 en color fucsia, es posible que nunca regrese. De hecho, si el diseño es repulsivo, probablemente tengamos un alto porcentaje de rebote. Por eso, tener un buen diseño es clave.
- Colabora con otros blogs: este Ătem de la receta no necesariamente está relacionado con el SEO, quien nos dirĂa que los links son más importantes. Ese es uno de los motivos que podrĂa impulsarnos a colaborar con otros blogs. Pero fundamentalmente, es la visibilidad que podemos ganar: estamos llegando a una audiencia más amplia que, quizás, tiene ganas de escuchar lo que estamos diciendo. A la hora de mejorar la visibilidad de un sitio web, podemos compartir parte de nuestro contenido con los demás.
- Usa tu propio dominio: haremos de este Ătem algo más breve. Es importantĂsimo tener nuestro propio dominio a la hora de mejorar la visibilidad de un sitio web. Esto se puede conseguir fácilmente, y tenemos diversas formas de hacerlo. Si tenemos un blog, por ejemplo, y queremos lograr que sea una publicaciĂłn respetable, usar un dominio .blogspot no serĂa demasiado profesional que digamos. Por eso, hacer una inversiĂłn en un dominio no es una mala idea.
- Participa de agregadores: hay muchos servicios que toman sitios web y blogs para centralizar el contenido y permitir que sus usuarios hagan descubrimientos. Otras comunidades también hacen lo mismo. En internet, plataformas como StumbleUpon y Menéame son ideales para dar a conocer nuestro contenido.
- Revisa tus estadĂsticas para mejorar: uno de los primeros pasos cuando estamos creando un sitio web es insertar Google Analytics. Pero esto no es todo. De hecho, las estadĂsticas que nos brinda el servicio tienen que ser implementadas para poder lograr una mejora del contenido. Si hacemos una revisiĂłn, por ejemplo, semanal de nuestra cantidad de visitas, nuestros posteos más leĂdos, las palabras claves que las personas han usado para llegar a nuestro blog, entre otras cosas, podemos armar una especie de "pasos a seguir" para continuar el proceso de mejorar la visibilidad de un sitio web.
- Mejora el crawling de tu sitio: ahora nos pondremos un poco más especĂficos. Cuando hablamos de la forma de buscar de Google, mencionamos el proceso de crawling a travĂ©s del cual los bots indexan nuestra página, por decirlo de forma sencilla. Para poder tener una mejor visibilidad dentro de Google, lo que podemos hacer es darle todas las comodidades a esos bots. Entre otras cosas, la navegaciĂłn Flash es el diablo, los frames de HTML tambiĂ©n, y si es posible, tratemos de evitar el uso de JavaScript en determinadas ocasiones.
- Usa tus palabras clave de forma inteligente: una forma para hacer que el SEO trabaje para nosotros es a través del uso de las palabras clave, un concepto pivotal en esta materia. Ahora bien, las palabras clave pueden aparecer en todas partes del sitio, pero fundamentalmente tienen que aparecer en el texto. Queda en nuestras manos hacer que su aparición no sea algo burdo, y sobre todo, que no sea algo evidente para el lector. Si repetimos constantemente una palabra, no solamente estaremos violando las reglas de la buena escritura, sino que además podremos estar perdiendo un visitante habitual potencial.
- Recurre a las redes sociales: finalmente, una de las formas más "modernas" de mejorar la visibilidad de un sitio web es a travĂ©s de las redes sociales. Hoy en dĂa es dudoso que una publicaciĂłn que se precie no tenga una página en Facebook o un perfil en Twitter. Esto se debe a que, de hecho, las redes sociales pueden ser una excelente fuente de visitas, pero además, pueden ofrecer un motor viralizador para nuestros contenidos. La decisiĂłn de invertir o no en publicidad para atraer a usuarios a nuestra página de Facebook, por ejemplo, puede ser fundamental. Las redes sociales no deben menospreciarse a la hora de cumplir con esta tarea.
viernes, 17 de mayo de 2013
Cloudii organiza tus archivos en la nube
Actualmente hay cientos de servicios para guardar archivos en Internet. Los hay para todos los gustos, la mayorĂa de ellos con su propio cliente para Android. Sin embargo, si utilizas dos o más de estos servicios, como Box, Dropbox, Google Drive o Skydrive, te serán muy Ăştiles aplicaciones como Cloudii, un programa para Android que te ayudará a organizar tus archivos en la nube desde una Ăşnica ventana.
Combinando dos o más servicios de almacenamiento en la nube, como Dropbox o Google Drive, podrásunificar todo ese espacio gratuito y acceder a él desde un único espacio virtual, ya que si tienes que usar cada cliente oficial de cada servicio de almacenamiento, el proceso puede ser pesado e incómodo. Cloudii te muestra los archivos guardados para organizar tus archivos en la nube con eficacia.
Para usar Cloudii, tan sólo tienes que instalarla en tu dispositivo Android a través de Google Play. Una vez instalado, la primera vez que la abras se mostrarán los servicios en la nube compatibles: Google Drive, Dropbox, SkyDrive y Box.
- Google Drive: 5GB gratuitos.
- Dropbox: 2GB gratuitos por defecto ampliables a 18GB.
- SkyDrive: 25GB gratuitos.
- Box: 5GB gratuitos.
Elige el servicio que vas a configurar. Podrás añadir una o más cuentas de cada servicio: se mostrará el espacio disponible y ocupado una vez hayas habilitado los permisos correspondientes.
Entre sus opciones más destacadas, Cloudii permite subir y descargar archivos de los distintos servicios de almacenamiento de ficheros en la nube y ver la lista de archivos disponibles en cada espacio.
En mi opiniĂłn, a Cloudii le falta un visor que muestre el contenido de los documentos e imágenes, algo extraño teniendo en cuenta que Google Drive y Skydrive lo permite, al menos vĂa web. Por otro lado, deberĂa mejorar la integraciĂłn de Dropbox, Google Drive y compañĂa permitiendo el envĂo de documentos de un servicio a otro directamente sin pasar por tu telĂ©fono Android.
Sin embargo, como alternativa a los clientes oficiales, Cloudii se erige como una interesante herramienta para organizar tus archivos en la nube. Combinando varios servicios y dos o más cuentas por servicio, conseguirás multiplicar tu espacio en la nube para guardar asà todos tus archivos y acceder a ellos desde el mismo lugar.
jueves, 16 de mayo de 2013
Exportar consultas SQL a CSV con MySQL
Al exportar registros en formato csv por lo general utilizamos PHP y vamos recorriendo los registros
Una manera fácil y rápida para generar archivos csv de nuestros registros en la base de datos las podemos hacer con una consulta sencilla desde MySQL.
SELECT id,nombre,email,direccion
FROM usuarios
INTO OUTFILE '/rp/usuarios.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY 'n'
donde:
- INTO OUTFILE : directorio y archivo donde se guardara.
- FIELDS TERMINATED BY : separador de cada campo.
- ENCLOSED BY : delimitaciĂłn de campo.
- LINES TERMINATED BY : separador de fila.
Este simple script puede hacer backups directamente, si utilizas PHP tal vez te interese generar archivos CSV con PHP, con esto puedes personalizar mejor el modo de exportación de registros ya que PHP recorrerá cada campo para generarlo.
Una manera fácil y rápida para generar archivos csv de nuestros registros en la base de datos las podemos hacer con una consulta sencilla desde MySQL.
viernes, 10 de mayo de 2013
Funciones en PHP no tan usadas pero Ăştiles
Incluso después de trabajar con PHP desde hace muchos años, a veces
nos encontramos con funciones y funcionalidades o caracterĂsticas de las
que no eramos conscientes. Algunas pueden ser Ăştiles pero no se usan
mucho, ya sea por el tipo de proyecto o el nivel de tecnologĂa que
tengamos. En este artĂculo comentarĂ© unas cuantas funciones y
caracterĂsticas de PHP que quizá no sabĂas.
Ejemplo de funciĂłn con argumentos opcionales:
Ahora, vamos a construir una funciĂłn que acepte cualquier nĂşmero de argumentos. Esta vez vamos a utilizar func_get_args():
Es una función mucho más potente que scandir() ya que también permite búsqueda de ficheros usando patrones.
También se pueden extraer múltiples tipos de ficheros de la siguiente manera:
NOTA: Los archivos se pueden devolver con su ruta, dependiendo de la bĂşsqueda que se haga
Si quieres obtener la ruta completa de cada archivo, tendrĂas que llamar a la funciĂłn realpath() en los valores retornados.
PHP tiene un complejo administrador de memoria, La cantidad total de memoria que esta siendo usada por un script puede subir y bajar durante la ejecución del mismo. Para obtener la memoria usada en un determinado momento se tiene que usar la función memory_get_usage(), para conseguir la cantidad más alta de memoria usada a lo largo de la ejecución del script usar la función memory_get_peak_usage()
Pongamos a prueba el uso de la memoria con el siguiente ejemplo.
NOTA:
Es muy posible que no os van a dar los mismo resultados que a mi,
porque el equipo donde ejecutáis vuestro cĂłdigo es diferente al mĂo, o
incluso si fuera idĂ©ntico tampoco tendrĂa porque salir lo mismo. Todo
depende de la memoria que vaya a asignar vuestro sistema operativo y la
configuración que tengáis en el servidor Apache y PHP.
ExplicaciĂłn de cada valor:
Ver siguiente ejemplo:
A
pesar de que el script durĂł 3 segundos para ejecutarse, el uso de la
CPU es muy muy bajo. Durante la ejecuciĂłn del sleep() el script no esta
consumiendo recursos de CPU. Hay otras muchas tareas que se ejecutan en
tiempo real pero que no consumen tiempo de CPU, como por ejemplo esperar
para operaciones de disco. Por lo que, como se puede ver, el uso de la
CPU y el tiempo de ejecuciĂłn de un scipt no siempre coinciden.
Otro ejemplo:
Esta
operaciĂłn ha llevado 1.4 segundos de tiempo de CPU, casi todas por
parte de tiempo de usuario ya que no existĂan otras llamadas al sistema.
El tiempo del sistema (System time) es el total de tiempo de CPU gasta en ejecutar llamadas por el kernel en el nombre del programa. Veamos un ejemplo:
Ahora
tenemos más uso del tiempo del sistema. Esto es porque el script llama a
la función microtime() varias veces, que ejecuta una petición a través
del sistema operativo para recoger la fecha.
Para obtener la linea actual donde estamos(__LINE__), la ruta del fichero (__FILE__), la ruta del directorio (__DIR__), el nombre de la función (__FUNCTION__), el nombre de la clase (__CLASS__), el nombre del método (__METHOD__) y namespace (__NAMESPACE__).
Este tipo de constantes son usada en desarrollo Open Source, como CakePHP, WordPress y otros cĂłdigos donde cada desarrollador los instala en diferentes rutas y el cĂłdigo debe ser capaz de determinar las rutas y cualquier otra informaciĂłn para poder funcionar correctamente
Usar
__LINE__ hace que el debuging o la localizaciĂłn de errores sea mucho
más fácil. Puedes obtener el número de linea que esta fallando.
También
se podrĂa hablar mucho sobre las constantes: __FUNCTION__, __CLASS__ y
__METHOD__ las cuales pueden ayudar muchĂsimo al trabajo con objetos y
con la creación y definición de patrones de diseño en el código, pero el
uso de Ă©stas constantes para trabajar con objetos podrĂa ser motivo de
un artĂculo tan sĂłlo para esto. En la documentaciĂłn de php http://php.net/manual/en/language.constants.predefined.php hay otros consejos y ejemplos.
En muchas situaciones vamos a necesitar generar identificadores o cadenas Ăşnicas. Confieso que yo suelo hacer esto: md5(time()) para generar string Ăşnicos, aunque puede que no sea 100% optimo. PHP propone la siguiente funciĂłn especĂfica para llevar a cabo esta tarea, uniqid().
El
inicio de la cadena suele ser similar entre los diferentes
identificadores que vamos generando, ya que el string generado está
relacionando con la fecha del servidor, es decir con la funciĂłn time().
Esto tiene una ventaja ya que todos los ids generados van en orden
alfabĂ©tico y se podrĂan ordenar.
Puedes enviar como primer parámetro en la funciĂłn un prefijo y puede poner a true el segundo valor para aumentar la entropĂa, (usando el generador de congruencia lineal combinado) al final del valor de retorno, lo que aumenta la probabilidad de que el resultado será Ăşnico. Por defecto devuelve una cadena de 13 caracteres, si se activa la entropĂa devuelve una cadena de 23 caracteres.
Esta función genera una cadena más corta que md5(), con lo que nos ayudará a ahorrar algo de espacio.
Hay 2 métodos para serializar variables, serialize() y unserialize():
This
was the native PHP serialization method. However, since JSON has become
so popular in recent years, they decided to add support for it in PHP
5.2. Now you can use the json_encode() and json_decode() functions as
well:
Estos son los métodos nativos de PHP para serializar. Sin embargo desde que JSON se volvió más popular, PHP sacó las funciones de json_encode() y json_decode en la versión 5.2.
Si tienes una versiĂłn de PHP inferior a 5.2 y llamas a las funciones de json_decode() o json_encode(), te aparecerá un error similar a este PHP Fatal error: Call to undefined function: json_encode(). Como he dicho, esta mejora aparece en la versiĂłn 5.2, para más informaciĂłn leer el siguiente artĂculo donde ya lo comentaba hace unos años http://www.pedroventura.com/php/php-fatal-error-call-to-undefined-function-json_encode/
Para esta tarea usaremos las funciones gzcompress() y gzuncompress()
Con esta técnica somos capaces de reducir al 50% el tamaño. También están las funciones gzencode() y gzdecode() que obtienen resultados similares pero con diferentes algoritmos de compresión
Lecturas recomendadas sobre compresiĂłn de archivos:
Imagina que quieres capturas datos para estadĂsticas al final de la ejecuciĂłn de un script, como por ejemplo cuanto tiempo tardĂł en ejecutarse.
En
este ejemplo parece un poco simple y sin mucho sentido, es un cĂłdigo al
inicio y otro al final y no parece que esta funciĂłn se pueda estar
ejecutando al final del script, ya que está al final. Pero hay que tener
en cuenta, de que si se añade un exit(), el código devuelve un fatal error
o incluso si el usuario detiene la ejecuciĂłn del script con el botĂłn de
parar del navegador esta funciĂłn siempre se va seguir ejecutando a
pesar de todo.
De todas maneras si conoces de otras funciones que sean desconocidas pero Ăştiles no dudes en comentarlas, con tus comentarios aportas tu experiencia y opiniĂłn al resto de lectores
Fuente: http://net.tutsplus.com/tutorials/php/9-useful-php-functions-and-features-you-need-to-know/
Funciones en PHP con nĂşmero arbitrario de argumentos
Seguro que ya sabes que PHP permite definir funciones con argumentos opcionales. Pero existe un método para permitir un numero arbitrario de argumentos en las funciones.Ejemplo de función con argumentos opcionales:
1 | // funciĂłn con 2 argumentos opcionales |
2 | function foo($arg1 = '', $arg2 = '') { |
3 |
4 | echo "arg1: $arg1n"; |
5 | echo "arg2: $arg2n"; |
6 |
7 | } |
8 |
9 |
10 | foo('hello','world'); |
11 | /* muestra |
12 | arg1: hello |
13 | arg2: world |
14 | */ |
15 |
16 | foo(); |
17 | /* Muestra |
18 | arg1: |
19 | arg2: |
20 | */ |
1 | // si, la lista de argumentos va vacĂa |
2 | function foo() { |
3 |
4 | // devuelve un array con todos los argumentos que se han pasado |
5 | $args = func_get_args(); |
6 |
7 | foreach ($args as $k => $v) { |
8 | echo "arg".($k+1).": $vn"; |
9 | } |
10 |
11 | } |
12 |
13 | foo(); |
14 | /* no muestra nada */ |
15 |
16 | foo('hello'); |
17 | /* muestra |
18 | arg1: hello |
19 | */ |
20 |
21 | foo('hello', 'world', 'again'); |
22 | /* muestra |
23 | arg1: hello |
24 | arg2: world |
25 | arg3: again |
26 | */ |
Buscar y encontrar ficheros en PHP con GLob()
Muchas funciones en PHP tienen nombres largos y descriptivos, sin embargo es difĂcil saber que hace una funciĂłn llamada glob(), a no ser que lo busques en la documentaciĂłn o ya la hayas usado previamente.Es una funciĂłn mucho más potente que scandir() ya que tambiĂ©n permite bĂşsqueda de ficheros usando patrones.
1 | // buscados todos los archivos con extensiĂłn .php, podrĂa ser cualquier otra extensiĂłn. |
2 | $files = glob('*.php'); |
3 |
4 | print_r($files); |
5 | /* los datos de salida serán algo similar a esto |
6 | Array |
7 | ( |
8 | [0] => phptest.php |
9 | [1] => pi.php |
10 | [2] => post_output.php |
11 | [3] => test.php |
12 | ) |
13 | */ |
1 | // sacamos todos los archivos con extensiĂłn .php y .txt |
2 | $files = glob('*.{php,txt}', GLOB_BRACE); |
3 |
4 | print_r($files); |
5 | /* los datos de salida se parecerán a los siguientes |
6 | Array |
7 | ( |
8 | [0] => phptest.php |
9 | [1] => pi.php |
10 | [2] => post_output.php |
11 | [3] => test.php |
12 | [4] => log.txt |
13 | [5] => test.txt |
14 | ) |
15 | */ |
1 | $files = glob('../images/a*.jpg'); |
2 |
3 | print_r($files); |
4 | /* datos de salida |
5 | Array |
6 | ( |
7 | [0] => ../images/apple.jpg |
8 | [1] => ../images/art.jpg |
9 | ) |
10 | */ |
1 | $files = glob('../images/a*.jpg'); |
2 |
3 | // aplico la funciĂłn a cada elemento del array |
4 | $files = array_map('realpath',$files); |
5 |
6 | print_r($files); |
7 | /* datos de salida |
8 | Array |
9 | ( |
10 | [0] => C:wampwwwimagesapple.jpg |
11 | [1] => C:wampwwwimagesart.jpg |
12 | ) |
13 | */ |
Procesar con PHP informaciĂłn de la memoria usada
Monitorizando la memoria usada de tus scripts serás capaz de optimizar tu cĂłdigo mucho mejor. La monitorizaciĂłn ya sea en los servidores, base de datos o en nuestro cĂłdigo siempre es un práctica muy aconsejable de realizar y con la que tendremos una informaciĂłn valiosa de la calidad de nuestro software, con esta informaciĂłn se pueden hacer muchas “cosas” pero eso da para otro artĂculo.PHP tiene un complejo administrador de memoria, La cantidad total de memoria que esta siendo usada por un script puede subir y bajar durante la ejecuciĂłn del mismo. Para obtener la memoria usada en un determinado momento se tiene que usar la funciĂłn memory_get_usage(), para conseguir la cantidad más alta de memoria usada a lo largo de la ejecuciĂłn del script usar la funciĂłn memory_get_peak_usage()
Pongamos a prueba el uso de la memoria con el siguiente ejemplo.
1 | echo "Bytes iniciales: ".memory_get_usage()."n"; |
2 | /* mostrará por ejemploo |
3 | Bytes iniciales: 361400 |
4 | */ |
5 |
6 | // vamos a forzar el uso de memoria |
7 | for ($i = 0; $i < 100000; $i++) { |
8 | $array []= md5($i); |
9 | } |
10 |
11 | // vamos a eliminar la mitad del array |
12 | for ($i = 0; $i < 100000; $i++) { |
13 | unset($array[$i]); |
14 | } |
15 |
16 | echo "Final: ".memory_get_usage()." bytes n"; |
17 | /* imprime |
18 | Final: 885912 bytes |
19 | */ |
20 |
21 | echo "Peak: ".memory_get_peak_usage()." bytes n"; |
22 | /* imprime |
23 | Peak: 13687072 bytes |
24 | */ |
InformaciĂłn del uso de CPU
Para obtener la informaciĂłn del uso de la CPU en PHP usaremos la funciĂłn getrusage(). Por el momento no esta disponible en plataformas con Windows.1 | print_r(getrusage()); |
2 | /* devuelve el siguiente array de datos |
3 | Array |
4 | ( |
5 | [ru_oublock] => 0 |
6 | [ru_inblock] => 0 |
7 | [ru_msgsnd] => 2 |
8 | [ru_msgrcv] => 3 |
9 | [ru_maxrss] => 12692 |
10 | [ru_ixrss] => 764 |
11 | [ru_idrss] => 3864 |
12 | [ru_minflt] => 94 |
13 | [ru_majflt] => 0 |
14 | [ru_nsignals] => 1 |
15 | [ru_nvcsw] => 67 |
16 | [ru_nivcsw] => 4 |
17 | [ru_nswap] => 0 |
18 | [ru_utime.tv_usec] => 0 |
19 | [ru_utime.tv_sec] => 0 |
20 | [ru_stime.tv_usec] => 6269 |
21 | [ru_stime.tv_sec] => 0 |
22 | ) |
23 |
24 | */ |
- ru_oublock: block output operations
- ru_inblock: block input operations
- ru_msgsnd: messages sent
- ru_msgrcv: messages received
- ru_maxrss: maximum resident set size
- ru_ixrss: integral shared memory size
- ru_idrss: integral unshared data size
- ru_minflt: page reclaims
- ru_majflt: page faults
- ru_nsignals: signals received
- ru_nvcsw: voluntary context switches
- ru_nivcsw: involuntary context switches
- ru_nswap: swaps
- ru_utime.tv_usec: user time used (microseconds)
- ru_utime.tv_sec: user time used (seconds)
- ru_stime.tv_usec: system time used (microseconds)
- ru_stime.tv_sec: system time used (seconds)
Ver siguiente ejemplo:
1 | // sleep de 3 segundos (non-busy) |
2 | sleep(3); |
3 |
4 | $data = getrusage(); |
5 | echo "User time: ". |
6 | ($data['ru_utime.tv_sec'] + |
7 | $data['ru_utime.tv_usec'] / 1000000); |
8 | echo "System time: ". |
9 | ($data['ru_stime.tv_sec'] + |
10 | $data['ru_stime.tv_usec'] / 1000000); |
11 |
12 | /* devuelve |
13 | User time: 0.011552 |
14 | System time: 0 |
15 | */ |
Otro ejemplo:
1 | // bucle de 10 millones de veces (busy, vamos a forzar un poquito) |
2 | for($i=0;$i<10000000;$i++) { |
3 |
4 | } |
5 |
6 | $data = getrusage(); |
7 | echo "User time: ". |
8 | ($data['ru_utime.tv_sec'] + |
9 | $data['ru_utime.tv_usec'] / 1000000); |
10 | echo "System time: ". |
11 | ($data['ru_stime.tv_sec'] + |
12 | $data['ru_stime.tv_usec'] / 1000000); |
13 |
14 | /* devuelve |
15 | User time: 1.424592 |
16 | System time: 0.004204 |
17 | */ |
El tiempo del sistema (System time) es el total de tiempo de CPU gasta en ejecutar llamadas por el kernel en el nombre del programa. Veamos un ejemplo:
1 | $start = microtime(true); |
2 | // seguimos llamando a microtime durante 3 segundos |
3 | while(microtime(true) - $start < 3) { |
4 |
5 | } |
6 |
7 | $data = getrusage(); |
8 | echo "User time: ". |
9 | ($data['ru_utime.tv_sec'] + |
10 | $data['ru_utime.tv_usec'] / 1000000); |
11 | echo "System time: ". |
12 | ($data['ru_stime.tv_sec'] + |
13 | $data['ru_stime.tv_usec'] / 1000000); |
14 |
15 | /* devuelve |
16 | User time: 1.088171 |
17 | System time: 1.675315 |
18 | */ |
Magic Constants
PHP provee de una herramienta super útil las: magic constants al español constantes mágicas (que suena un poco peor,no?).Para obtener la linea actual donde estamos(__LINE__), la ruta del fichero (__FILE__), la ruta del directorio (__DIR__), el nombre de la función (__FUNCTION__), el nombre de la clase (__CLASS__), el nombre del método (__METHOD__) y namespace (__NAMESPACE__).
Este tipo de constantes son usada en desarrollo Open Source, como CakePHP, WordPress y otros cĂłdigos donde cada desarrollador los instala en diferentes rutas y el cĂłdigo debe ser capaz de determinar las rutas y cualquier otra informaciĂłn para poder funcionar correctamente
1 | // Esto es relativo a la ruta del script cargado |
2 | // Este método puede dar problemas cuando se ejecutan scripts desde diferentes rutas |
3 | require_once('config/database.php'); |
4 |
5 | // Esto siempre es relativo a la ruta del fichero |
6 | // no importa desde donde se esté ejecutando el include |
7 | require_once(dirname(__FILE__) . '/config/database.php'); |
1 | // cualquier cĂłdigo |
2 | // ... |
3 | my_debug("some debug message", __LINE__); |
4 | /* devuelve |
5 | Line 4: some debug message |
6 | */ |
7 |
8 | // otro cĂłdigo diferente |
9 | // ... |
10 | my_debug("another debug message", __LINE__); |
11 | /* prints |
12 | Line 11: another debug message |
13 | */ |
14 |
15 | function my_debug($msg, $line) { |
16 | echo "Line $line: $msgn"; |
17 | } |
Generar IDs Ăşnicos
There may be situations where you need to generate a unique string. I have seen many people use the md5() function for this, even though it’s not exactly meant for this purpose:En muchas situaciones vamos a necesitar generar identificadores o cadenas Ăşnicas. Confieso que yo suelo hacer esto: md5(time()) para generar string Ăşnicos, aunque puede que no sea 100% optimo. PHP propone la siguiente funciĂłn especĂfica para llevar a cabo esta tarea, uniqid().
1 | // genera una cadena Ăşnica |
2 | echo uniqid(); |
3 | /* devuelve |
4 | 4bd67c947233e |
5 | */ |
Puedes enviar como primer parámetro en la funciĂłn un prefijo y puede poner a true el segundo valor para aumentar la entropĂa, (usando el generador de congruencia lineal combinado) al final del valor de retorno, lo que aumenta la probabilidad de que el resultado será Ăşnico. Por defecto devuelve una cadena de 13 caracteres, si se activa la entropĂa devuelve una cadena de 23 caracteres.
1 | // con prefijo |
2 | echo uniqid('foo_'); |
3 | /* devuelve |
4 | foo_4bd67d6cd8b8f |
5 | */ |
6 |
7 | // con más entropĂa |
8 | echo uniqid('',true); |
9 | /* devuelve |
10 | 4bd67d6cd8b926.12135106 |
11 | */ |
12 |
13 | // ambos |
14 | echo uniqid('bar_',true); |
15 | /* devuelve |
16 | bar_4bd67da367b650.43684647 |
17 | */ |
SerializaciĂłn en PHP
La serialización básicamente es el formateo de arrays u objetos para convertirlos en un string. PHP ya tiene funciones que hacen esta tarea.Hay 2 métodos para serializar variables, serialize() y unserialize():
1 | // datos en un array |
2 | $myvar = array( |
3 | 'hello', |
4 | 42, |
5 | array(1,'two'), |
6 | 'apple' |
7 | ); |
8 |
9 | // convertimos a string |
10 | $string = serialize($myvar); |
11 |
12 | echo $string; |
13 | /* devuelve |
14 | a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:"two";}i:3;s:5:"apple";} |
15 | */ |
16 |
17 | // incluso puedes volver al estado original |
18 | $newvar = unserialize($string); |
19 |
20 | print_r($newvar); |
21 | /* devuelve |
22 | Array |
23 | ( |
24 | [0] => hello |
25 | [1] => 42 |
26 | [2] => Array |
27 | ( |
28 | [0] => 1 |
29 | [1] => two |
30 | ) |
31 |
32 | [3] => apple |
33 | ) |
34 | */ |
Estos son los métodos nativos de PHP para serializar. Sin embargo desde que JSON se volvió más popular, PHP sacó las funciones de json_encode() y json_decode en la versión 5.2.
Si tienes una versiĂłn de PHP inferior a 5.2 y llamas a las funciones de json_decode() o json_encode(), te aparecerá un error similar a este PHP Fatal error: Call to undefined function: json_encode(). Como he dicho, esta mejora aparece en la versiĂłn 5.2, para más informaciĂłn leer el siguiente artĂculo donde ya lo comentaba hace unos años http://www.pedroventura.com/php/php-fatal-error-call-to-undefined-function-json_encode/
1 | // un array |
2 | $myvar = array( |
3 | 'hello', |
4 | 42, |
5 | array(1,'two'), |
6 | 'apple' |
7 | ); |
8 |
9 | // convertimos a string |
10 | $string = json_encode($myvar); |
11 |
12 | echo $string; |
13 | /* devuelve |
14 | ["hello",42,[1,"two"],"apple"] |
15 | */ |
16 |
17 | // podemos volver al array original |
18 | $newvar = json_decode($string); |
19 |
20 | print_r($newvar); |
21 | /* devuelve |
22 | Array |
23 | ( |
24 | [0] => hello |
25 | [1] => 42 |
26 | [2] => Array |
27 | ( |
28 | [0] => 1 |
29 | [1] => two |
30 | ) |
31 |
32 | [3] => apple |
33 | ) |
34 | */ |
Comprimir cadenas en PHP
Cuando hablamos de compresiĂłn, casi siempre nos referimos a ficheros, tales como los archivos ZIP. Pero es posible comprimir largas cadenas en PHP sin involucrar la creaciĂłn de ningĂşn archivo.Para esta tarea usaremos las funciones gzcompress() y gzuncompress()
1 | $string = |
2 | "Lorem ipsum dolor sit amet, consectetur |
3 | adipiscing elit. Nunc ut elit id mi ultricies |
4 | adipiscing. Nulla facilisi. Praesent pulvinar, |
5 | sapien vel feugiat vestibulum, nulla dui pretium orci, |
6 | non ultricies elit lacus quis ante. Lorem ipsum dolor |
7 | sit amet, consectetur adipiscing elit. Aliquam |
8 | pretium ullamcorper urna quis iaculis. Etiam ac massa |
9 | sed turpis tempor luctus. Curabitur sed nibh eu elit |
10 | mollis congue. Praesent ipsum diam, consectetur vitae |
11 | ornare a, aliquam a nunc. In id magna pellentesque |
12 | tellus posuere adipiscing. Sed non mi metus, at lacinia |
13 | augue. Sed magna nisi, ornare in mollis in, mollis |
14 | sed nunc. Etiam at justo in leo congue mollis. |
15 | Nullam in neque eget metus hendrerit scelerisque |
16 | eu non enim. Ut malesuada lacus eu nulla bibendum |
17 | id euismod urna sodales. "; |
18 |
19 | $compressed = gzcompress($string); |
20 |
21 | echo "Original size: ". strlen($string)."n"; |
22 | /* prints |
23 | Original size: 800 |
24 | */ |
25 |
26 |
27 |
28 | echo "Compressed size: ". strlen($compressed)."n"; |
29 | /* prints |
30 | Compressed size: 418 |
31 | */ |
32 |
33 | // getting it back |
34 | $original = gzuncompress($compressed); |
Lecturas recomendadas sobre compresiĂłn de archivos:
- comprimir y descomprimir un archivo con .gz GZip
- Como comprimir una carpeta entera en linux desde consola
Registrar funciĂłn de apagado (shutdown)
Hay una funciĂłn llamada register_shutdown_function() que te permite ejecutar cĂłdigo justo despuĂ©s de que termine la ejecuciĂłn del script.Imagina que quieres capturas datos para estadĂsticas al final de la ejecuciĂłn de un script, como por ejemplo cuanto tiempo tardĂł en ejecutarse.
1 | // obtenemos el tiempo inicial |
2 | $start_time = microtime(true); |
3 |
4 | // aquĂ todo el cĂłdigo y la lĂłgica |
5 | // ... |
6 |
7 | // mostramos cuanto tiempo tardĂł el script |
8 | echo "execution took: ". |
9 | (microtime(true) - $start_time). |
10 | " seconds."; |
ConclusiĂłn
Que te ha parecido? has aprendido algunas funciones nuevas? Yo por lo menos he aprendido unas cuantas y he refrescado otras que hacĂa mucho tiempo no habĂa utilizado.De todas maneras si conoces de otras funciones que sean desconocidas pero Ăştiles no dudes en comentarlas, con tus comentarios aportas tu experiencia y opiniĂłn al resto de lectores
Fuente: http://net.tutsplus.com/tutorials/php/9-useful-php-functions-and-features-you-need-to-know/
Suscribirse a:
Entradas (Atom)





