martes, 13 de septiembre de 2016

Instalación y Configuración de DLL SQL SERVER para PHP

Hola amigos, hoy voy a detallar como se debe instalar la DLL de SQL SERVER cuando trabajas con PHP. Los pasos a seguir son muy sencillos.

Primero debes saber la versión de PHP con la que estas trabajando, para ello debes consultar tu phpinfo(); por ejemplo, actualmente trabajo con PHP versión 5.6, dicho esto, busco dentro de la siguiente dirección Web Drivers SQL SERVER, que driver se adapta.



Si bien es cierto los nombres no te ayudan a saber que software debes descargar, aquí va una ayuda:
  • 3.0: Para la versión 5.3 y 5.4 de PHP
  • 3.1: Para la versión 5.4 y 5.5 de PHP
  • 3.2: Para la versión 5.5 y 5.6 de PHP
  • 4.0: Para la versión 6 de PHP

Mayor referencia en Manual de PHP

Con servidor Web APACHE (Para mi caso)
  1. Debes instalar las DLL que terminan en TS, ya sea para PDO o utilización de sentencias directas de SQL SERVER: php_pdo_sqlsrv_56_ts.dll ó php_sqlsrv_56_ts.dll
  2. Agregar en el archivo php.ini la DLL, por ejemplo para mi caso: extension=php_pdo_sqlsrv_56_ts.dll 
  3. Reiniciar el servidor Apache
  4. Revisar el phpinfo(); allí deberá aparecer la DLL agregada.

Con servidor Web IIS 

  1. Debes instalar las DLL que terminan en NTS, ya sea para PDO o utilización de sentencias directas de SQL SERVER: php_pdo_sqlsrv_56_nts.dll ó php_sqlsrv_56_nts.dll
  2. Agregar en el archivo php.ini la DLL, por ejemplo: extension=php_pdo_sqlsrv_56_nts.dll 
  3. Reiniciar el servidor IIS
  4. Revisar el phpinfo(); allí deberá aparecer la DLL agregada.

Espero haberles ayudado, dado que muchas veces la información que se encuentra en Internet no se entiende.

jueves, 7 de julio de 2016

1ra Clase de Arduino

Estimados,

Me pareció interesante el curso de Arduino colgado por el Ing. Joe Pisconte, aunque es la primera clase, se explica a detalle muchos conceptos que quizás muchos de nosotros no los teníamos en cuenta.

Un fuerte abrazo a todos y a continuación el vídeo.


viernes, 11 de marzo de 2016

Mostrar extensiones de nombres de archivo - Windows 7

Estimados,

Para aquellas personas que no saben como hacer para que aparezcan las extensiones de sus archivos (.doc, .xls, .pdf, etc) en Windows 7, les traigo la solución:


  1. Hacer clic en el botón InicioImagen del botón Inicio, 
  2. Abrir Panel de control
  3. Ir al módulo de Apariencia y personalización 
  4. Ir a Opciones de carpeta.
  5. Hacer clic en la ficha Ver y luego en Configuración Avanzada.
  6. Desactive la casilla Ocultar las extensiones de archivo para tipos de archivo conocidos y, a continuación, haga clic en Aceptar.

Eso es todo, saludos y hasta la próxima.

martes, 26 de enero de 2016

Aceleramiento de consultas en bases de datos MySQL

Hoy les traigo un pequeño aporte de aceleramiento de consultas en bases de datos MySQL. En realidad recién estoy entrando en este campo de optimización, porque nunca había tenido la necesidad de realizar este tipo de procesos pero siempre hay una primera vez.

Bueno les voy a dar como ejemplo mi caso en un proyecto que he estado trabajando con el lenguaje de programación PHP, tenía los siguientes bucles anidados:

$listaEmpresaPartida = $this->gEmpresaPartida->listarEmpresaPartidaSinDetalle();
for($i = 0; $i < sizeOf($listaEmpresaPartida); $i++) {
        $idEmpresaPartida = $listaEmpresaPartida[$i][0];
        $partida = $listaEmpresaPartida[$i][1];
        $empresa = $listaEmpresaPartida[$i][2];
        $fechaInicio = $listaEmpresaPartida[$i][3];
        $fechaFin = $listaEmpresaPartida[$i][4];
        
        $detalleSinRelacion = $this->gDetalle->listarDetalleSinRelacionPorPartidaEmpresaFechaInicioFechaFin($partida, $empresa, $fechaInicio, $fechaFin);
        for($j = 0; $j < sizeOf($detalleSinRelacion); $j++) {
          $fob = $detalleSinRelacion->getFob();
          $cantidad = $detalleSinRelacion->getCantidad();
          $fecha = $detalleSinRelacion->getFecha();
          $tipo = $detalleSinRelacion->getTipo();
          
          //Esto lo hago para no repetir registros en la base de datos
          if(!$this->gDetalle->existePorIdEmpresaPartidaFechaTipo($idEmpresaPartida, $fob, $cantidad, $fecha, $tipo)) { 

...
...
...

Si se fijan trabajo con clases y siempre obtengo arrays de objetos los cuales recorro con bucles for. Bueno vamos contándoles que había detrás.

Contaba con una base de datos de apenas 10 tablas pero 4 tablas contaban con más de medio millón de registros los cuales tenía que consultar y sacar un reporte que me había solicitado mi cliente en excel.

La configuración de mis 10 tablas al comienzo eran InnoDB y mi motor de BD estaba configurado de forma básica.

El pedazo de código que ven arriba para sacar un reporte en excel demoraba en sacar los datos cerca de 40 a 45 minutos, claro como les recuerdo estaba consultando cerca de 2 millones de datos.

Pasos que he seguido para optimizar

1) Configurar mi motor de base de datos, aumentando cache, utilización de memoria entre otros, busquen en Google y te dan varios ejemplos de como configurar tu servidor MySQL.

2) Las 4 tablas (las que cuentan con una gran cantidad de registros) las he pasado de InnoDB a MyISAM, y las relaciones las trabajo por código.

3) Crear índices de los campos que consulto frecuentemente en las consultas (este paso redujo notablemente el tiempo).

Estimados he logrado que mi algoritmo de 45 minutos aproximadamente se reduzca a 6 minutos aproximadamente.

Espero les sirva estos pequeños consejos, su amigo Carlos Zacarías.

Seguidores