gafeman viciao2k3 logo viciao2k3
 
¿que estoy haciendo?   follow me
@tcul http://tentacul.us/track/1745/
 chica del dia  —  la novia de tu mejor amigo
 
Suscribete →  
433  fans y una planta carnivora
 
Todos los articulos de la categoria PHP
Actualizado hace 23 horas
Noticias del dia
5

Experimentos con la carga de javascript en GoTube

Tag: PHP    Por: gafeman @ 25 Septiembre, 2007    Lecturas: 1070   

Cuando me meto de lleno en un proyecto, siempre intento experimentar / aprender algo nuevo y reducir el número de chapuzas de mi programación.

Una de las pegas de GoTube, es el tiempo que tienes que esperar a que se cargue todo, para poder realizar una búsqueda, os explico el experimento que he llevado a cabo.

Antes:

HTML:

<html>
<head>
<script type="text/javascript" src="js/totjs.php"></script>
</head>
<body>
<!--contenido de la página-->
<script type="text/javascript" src="API_DE_GOOGLE_MAPS"></script>
</body>
</html>

Javascript:

La aplicación no funciona hasta que se ha cargado todo (window.onload)

Ahora:

Para reducir el tiempo de carga, he decidido separar los javascripts en 2 grupos:

  1. Imprescindibles para realizar la búsqueda
  2. Necesarios una vez terminada la búsqueda, ej. GreyBox

HTML:

<html>
<head>
<script type="text/javascript" src="js/totjs.php"></script>
</head>
<body>
<!--contenido de la página-->
<script type="text/javascript" src="js/totjs2.php"></script>
<script type="text/javascript" src="API_DE_GOOGLE_MAPS"></script>

</body>
</html>

Javascript:

Aprovechando que he separado los javascripts, los eventos que tenia en el window.onload, los he metido en el fichero totsjs2.php

De esta manera no hace falta esperar a que se cargue todo, ya que los eventos se ejecutan al cargar el fichero totsjs2.php

Experimento en PHP:

Seguramente te habrás preguntado:

¿Por qué has enlazado el javascript a un fichero .php en vez de un .js de toda la vida?

Todo empezó, cuando leí un articulo en uLoVe-TeCh, en el que habla de aumentar la rapidez del blog, reduciendo el número de llamadas HTTP, me puse a buscar y encontré este tutorial (ahora se ve mal, pero antes se podía leer sin tener que seleccionar el texto)

Estos son los motivos:

  1. Agrupar todos los javascripts para reducir el número de llamadas HTTP
  2. Comprimir el resultado en gzip
  3. Poder continuar teniendo los javascript en ficheros separados (para tenerlo organizado)

El código fuente: (de code font)

PHP:
  1. header('Content-type: text/javascript; charset: UTF-8');
  2. header('Cache-Control: must-revalidate');
  3. $offset = 60 * 60 * 24 * 3;
  4. header('Expires: '.gmdate('D, d M Y H:i:s',time() + $offset).' GMT');
  5.  
  6. if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'],'gzip'))
  7. ob_start('ob_gzhandler');
  8. else
  9.  
  10. readfile('javascript1.js');
  11. readfile('javascript2.js');
  12. readfile('javascript3.js');
  13.  

También se puede utilizar para cargar todas las hojas de estilo CSS, pero para eso tienes que cambiar:

Content-type: text/javascript

por:

Content-Type: text/css

Resultados en firebug y borrando la cache en cada prueba:

Sin utilizar el script PHP y llamando a los ficheros javascript y css, por separado:
37 requests - 251 KB - 10.63s

Utilizando el script PHP:
26 requests - 170 KB - 6.61s

La diferencia:
11 requests - 81 KB - 4.02s

Puede que estos números sean insignificantes, pero comprueba GoTube tu mismo y me comentas (eso si, pulsa un par de veces F5, para refrescar la cache)

La parte mala:

Como se tiene que ejecutar código PHP, la CPU del servidor tiene que trabajar un poco más

La parte buena:

Reduciendo la carga, también se disminuie el uso de ancho de banda (bandwidth)

4

Diferentes maneras de inicializar una matriz

Tag: PHP    Por: gafeman @ 9 Septiembre, 2007    Lecturas: 752   

Maneras de iniciar una matriz de 7 elementos con valor cero:

  1. $tabla = array(0,0,0,0,0,0,0);
  2. for($i=0;$i<=6;$i++)$tabla[]=0;
  3. $tabla = array_pad (array(), 7, 0);

Todos devuelven el mismo resultado:

Array
(
    [0] => 0
    [1] => 0
    [2] => 0
    [3] => 0
    [4] => 0
    [5] => 0
    [6] => 0
)

¿Conoces más maneras de hacerlo?
¿Cuál crees que es la más eficiente?

2

Consejo php, cuando no utilizar preg_match

Tag: PHP    Por: gafeman @ 22 Agosto, 2007    Lecturas: 1222   

Buscando documentación sobre la función php preg_match, encontré el siguiente consejo:

No usar preg_match si lo único que quieres es comprobar si un string (aguja) esta en otro string (pajar)
Usa strpos o strstr son más rápidos

Estaría bien hacer una lista con comparaciones entre funciones, para ver cuales son las mejores

por ejemplo, yo en el caso de arriba, utilizaria la función eregi que permite usar expresiones regulares y es insensible a minúsculas y mayúsculas

4

trabajar con ficheros, saltos de linea y las comillas

Tag: PHP    Por: gafeman @ 21 Agosto, 2007    Lecturas: 1517   

cuando quieras crear/editar ficheros con saltos de linea, evita poner ( \n ) entre comillas simples ( ' ), para evitar resultados inesperados

Ejemplo con comillas simples:

PHP:
  1. echo 'linea 1\n';
  2. echo 'linea 2';

Resultado:

linea 1\nlinea 2

Ejemplo con comillas dobles:

PHP:
  1. echo "linea 1\n";
  2. echo "linea 2";

Resultado:

linea 1
linea 2

Edito: La solución ideal:

PHP:
  1. echo 'linea 1',"\n",'linea 2';

Resultado:

linea 1
linea 2

6

Configurar cronjob para ejecutar un script php (cpanelX)

Tag: PHP    Por: gafeman @ 3 Agosto, 2007    Lecturas: 2021   

¿Que es un Cronjob?

Es un proceso automatizado que se ejecuta en un intervalo de tiempo definido por el usuario

Ejemplos de uso:

  • Hacer copias de la base de datos
  • Optimizar la base de datos
  • Enviar un boletín de noticias
  • Eliminar archivos temporales de una carpeta

Requisitos:

  1. Tener la web en un servidor linux
  2. Que tu compañía de hosting te permita configurar cronjobs
  3. saber la ruta del script php que queramos ejecutar, por ejemplo:
    /home/vicia3/public_html/BD_optimizar.php

Caso practico:

Hace un tiempo adapte un script de PHPNUKE a wordpress para optimizar la base de datos mysql

Para ejecutarlo hay dos maneras:

    1. manualmente desde el navegador
    2. o automáticamente configurando un cronjobs

    A continuación voy a explicar la manera de configurar un cronjob desde un panel de control cpanelX (que sepa lo utilizan dattatec y lunarpages)

    Pasos:

    1. Sigue los pasos de este tutorial para instalar el script para optimizar la base de datos mysql (Apunta la ruta del fichero donde guardas el script)
    2. Dirigete a la pantalla principal del panel de control cpanelx de tu hosting
    3. Busca la opción Cron jobs:
      cronjobs
    4. Una vez dentro puedes seleccionar el modo para crear o editar los cronjobs:
      Yo recomiendo hacerlo en modo estándar, es más fácil e intuitivo
      modo cronjobs
    5. Como podréis ver en la imagen inferior el cronjob esta configurado para ejecutar el script php: /home/vicia3/public_html/BD_optimizar.php
      el día 1 de cada mes por la media noche
      configuracion cronjobs
      Para que podáis copiar el comando linux es el siguiente:
      cd /home/vica3/public_html/ ; php BD_optimizar.php

      Recuerda que tienes que cambiar la ruta segun vuestro servidor
    6. Una vez creado para finalizar le dais al botón Save Crontab

    Notas:

    • Puedes hacer que se ejecute dos días a la semana, por ejemplo:
      seleccionas monday (lunes), pulsa la tecla control (Ctrl) y seleccionas Wednesday (miércoles)
    • Seguramente hay varias maneras de hacerlo pero os aseguro que esta funciona correctamente

    Mas información:

    http://www.adminschoice.com/docs/crontab.htm

    background by eboy