martes, 24 de julio de 2012

Tips de performance en Php

Actualiza tu versión de Php


Los equipos de desarrolladores de php mejoran las versiones de php continuamente, mantené actualizada la versión de php de tu servidor. (también es recomendable por cuestiones de seguridad)



Usa sistemas de cache


Usa algún módulo de cache, tal como Memcache, o un sistema de templates que soporte cache, como Smarty,  para mejorar la performance de su sitio web respecto de consultas a la base de datos y el rendereo de sus páginas.

No copies variables por ninguna razón

Los programadores novatos intentan hacer su código fácil de leer, claro, y en ese afán crean variables innecesarias.

$description = strip_tags($_POST['description']);
echo $description;

No hay ninguna razón para hacer eso.

echo strip_tags($_POST['description']);
 Copiar variables resulta en un doble consumo de memoria, y vuelven más lentos a los scripts.

Evita hacer querys Sql en loops

Es conveniente hacer una sola query al final de un loop, siempre que se pueda, que hacer una query por cada ciclo del loop.

NO:
foreach ($userList as $user) {
  $query = 'INSERT INTO users (first_name,last_name) VALUES("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
  mysql_query($query);
  }

SI:
$userData = array();
foreach ($userList as $user) {
    $userData[] = '("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
 }
$query = 'INSERT INTO users (first_name,last_name) VALUES' . implode(',', $userData);
mysql_query($query);


jueves, 19 de julio de 2012

Thumbnail de una imagen al vuelo

Este pequeño código permite crear un thumbnail de una imagen al vuelo, sin guardarla.

Recibe una imagen por get y crea el thumbnail



/**
* create_thumbnail.php
*/

$url
= $_GET['url'];
$url = str_replace("http:/","http://",$url);
$allowed = array('jpg','gif','png');
$pos = strrpos($_GET['url'], ".");
$str = substr($_GET['url'],($pos + 1));
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
// Getting binary data
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$image = curl_exec($ch);
curl_close($ch);
// output to browser
$im = @imagecreatefromstring($image);
$tw = @imagesx($im);
if(!$tw){
    // Font directory + font name
    $font = '../../fonts/Austrise.ttf';
    // Size of the font
    $fontSize = 18;
    // Height of the image
    $height = 32;
    // Width of the image
    $width = 250;
    // Text
    $str = 'Couldn\'t get image.';
    $img_handle = imagecreate ($width, $height) or die ("Cannot Create image");
    // Set the Background Color RGB
    $backColor = imagecolorallocate($img_handle, 255, 255, 255);
    // Set the Text Color RGB
    $txtColor = imagecolorallocate($img_handle, 20, 92, 137); 
    $textbox = imagettfbbox($fontSize, 0, $font, $str) or die('Error in imagettfbbox function');
    $x = ($width - $textbox[4])/2;
    $y = ($height - $textbox[5])/2;
    imagettftext($img_handle, $fontSize, 0, $x, $y, $txtColor, $font , $str) or die('Error in imagettftext function');
    header('Content-Type: image/jpeg');
    imagejpeg($img_handle,NULL,100);
    imagedestroy($img_handle); 
}else{
    if($str == 'jpg' || $str == 'jpeg')
        header("Content-type: image/jpeg");
    if($str == 'gif')
        header("Content-type: image/gif");
    if($str == 'png')
        header("Content-type: image/png");
    $th = imagesy($im);
    $thumbWidth = 200;
    if($tw <= $thumbWidth){
        $thumbWidth = $tw;
    }
    $thumbHeight = $th * ($thumbWidth / $tw);
    $thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight);
    if($str == 'gif'){
        $colorTransparent = imagecolortransparent($im);
        imagefill($thumbImg, 0, 0, $colorTransparent);
        imagecolortransparent($thumbImg, $colorTransparent);
    }
    if($str == 'png'){
        imagealphablending($thumbImg, false);
        imagesavealpha($thumbImg,true);
        $transparent = imagecolorallocatealpha($thumbImg, 255, 255, 255, 127);
        imagefilledrectangle($thumbImg, 0, 0, $thumbWidth, $thumbHeight, $transparent);
    }
    imagecopyresampled($thumbImg, $im, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $tw, $th);
    if($str == 'jpg' || $str == 'jpeg'){
        imagejpeg($thumbImg, NULL, 100);
    }
    if($str == 'gif'){
        imagegif($thumbImg);
    }
    if($str == 'png'){
        imagealphablending($thumbImg,TRUE);
        imagepng($thumbImg, NULL, 9, PNG_ALL_FILTERS);
    }
    imagedestroy($thumbImg);
}

Php de la forma correcta (Php The Right Way)

Introducción

Hay una gran cantidad de información no actualizada en la Web que lleva los nuevos usuarios de PHP por mal camino, la propagación de las malas prácticas y el código malo. Esto tiene que parar. PHP: La manera correcta es una herramienta fácil de leer, de referencia rápida para las mejores prácticas aceptadas de PHP, los estándares de codificación, y enlaces a tutoriales de autoridad en todo la Web.

El sitio PHP The Rigth Way brinda el punto de partida para escribir código php en la forma correcta. 

Una gran herramienta.

 

martes, 17 de julio de 2012

Oportunidad Laboral en Interacel Argentina, Programador Php Junior

Importante empresa internacional busca incorporar un programador Junior.

Preferentemente estudiante de carreras de sistemas o afines.

Conocimientos:
PHP (excluyente)
MySQL (excluyente)
PostgreSQL (deseable)

Descripción de tareas:
Sus principales tareas serán configuración de servicios, mantenimiento y programación de sistemas de trivias, votaciones, etc.

Horario: lunes a viernes 9 a 18Hs.
Lugar de trabajo: Palermo, Capital Federal
Interesados enviar Curriculum Vitae a dkormakov@interacel.com



jueves, 5 de julio de 2012

formato numérico con separador de miles y coma decimal

Una pequeña función para dar formato numérico con separador de miles y coma decimal, lista para usar.

Usando la función number_format  de Php con parametros prefijados según nuestra conveniencia.

 
function formato_numerico($number){
        return number_format ($number, 1, ",",".");
}