Você está na página 1de 23

Servidor HTTP Apache

Apache

Desarrollador Apache Software Foundation http://httpd.apache.org Informacin general Diseador ltima versin estable Gnero Programado en Sistema operativo Licencia En espaol Robert McCool1 2.2.19 (info)
22 de mayo de 2011; hace 46 das

Servidor web C Multiplataforma Licencia Apache ?

El servidor HTTP Apache es un servidor web HTTP de cdigo abierto para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.12 y la nocin de sitio virtual. Cuando comenz su desarrollo en 1995 se bas inicialmente en cdigo del popular NCSA HTTPd 1.3, pero ms tarde fue reescrito por completo. Su nombre se debe a que Behelendorf quera que tuviese la connotacin de algo que es firme y enrgico pero no agresivo, y la tribu Apache fue la ltima en rendirse al que pronto se convertira en gobierno de EEUU, y en esos momentos la preocupacin de su grupo era que llegasen las empresas y "civilizasen" el paisaje que haban creado los primeros ingenieros de internet. Adems Apache consista solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en ingls, a patchy server (un servidor "parcheado"). El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation. Apache presenta entre otras caractersticas altamente configurables, bases de datos de autenticacin y negociado de contenido, pero fue criticado por la falta de una interfaz grfica que ayude en su configuracin. Apache tiene amplia aceptacin en la red: desde 1996, Apache, es el servidor HTTP ms usado. Alcanz su mxima cuota de mercado en 2005 siendo el servidor empleado en el 70% de los sitios web en el mundo, sin embargo ha sufrido un descenso en su

cuota de mercado en los ltimos aos. (Estadsticas histricas y de uso diario proporcionadas por Netcraft3 ). La mayora de las vulnerabilidades de la seguridad descubiertas y resueltas tan slo pueden ser aprovechadas por usuarios locales y no remotamente. Sin embargo, algunas se pueden accionar remotamente en ciertas situaciones, o explotar por los usuarios locales malvolos en las disposiciones de recibimiento compartidas que utilizan PHP como mdulo de Apache.

Contenido
[ocultar]
y y y y y y y y

1 Ventajas 2 Mdulos 3 Uso 4 Configuracin 5 Licencia 6 Vase tambin o 6.1 Otros proyectos de la Apache Software Foundation 7 Referencias 8 Enlaces externos

[editar] Ventajas
y y y y y

Modular Cdigo abierto Multi-plataforma Extensible Popular (fcil conseguir ayuda/soporte)

[editar] Mdulos
La arquitectura del servidor Apache es muy modular. El servidor consta de una seccin core y diversos mdulos que aportan mucha de la funcionalidad que podra considerarse bsica para un servidor web. Algunos de estos mdulos son:
y y

y y y

mod_ssl - Comunicaciones Seguras va TLS. mod_rewrite - reescritura de direcciones (generalmente utilizado para transformar pginas dinmicas como php en pginas estticas html para as engaar a los navegantes o a los motores de bsqueda en cuanto a cmo fueron desarrolladas estas pginas). mod_dav - Soporte del protocolo WebDAV (RFC 2518). mod_deflate - Compresin transparente con el algoritmo deflate del contenido enviado al cliente. mod_auth_ldap - Permite autentificar usuarios contra un servidor LDAP.

mod_proxy_ajp - Conector para enlazar con el servidor Jakarta Tomcat de pginas dinmicas en Java (servlets y JSP).

El servidor de base puede ser extendido con la inclusin de mdulos externos entre los cuales se encuentran:
y y y y y y y y y

mod_cband - Control de trfico y limitador de ancho de banda. mod_perl - Pginas dinmicas en Perl. mod_php - Pginas dinmicas en PHP. mod_python - Pginas dinmicas en Python. mod_rexx - Pginas dinmicas en REXX y Object REXX. mod_ruby - Pginas dinmicas en Ruby. mod_aspdotnet - Pginas dinmicas en .NET de Microsoft (Mdulo retirado). mod_mono - Pginas dinmicas en Mono mod_security - Filtrado a nivel de aplicacin, para seguridad.

[editar] Uso
Apache es usado principalmente para enviar pginas web estticas y dinmicas en la World Wide Web. Muchas aplicaciones web estn diseadas asumiendo como ambiente de implantacin a Apache, o que utilizarn caractersticas propias de este servidor web. Apache es el componente de servidor web en la popular plataforma de aplicaciones LAMP, junto a MySQL y los lenguajes de programacin PHP/Perl/Python (y ahora tambin Ruby). Este servidor web es redistribuido como parte de varios paquetes propietarios de software, incluyendo la base de datos Oracle y el IBM WebSphere application server. Mac OS X integra apache como parte de su propio servidor web y como soporte de su servidor de aplicaciones WebObjects. Es soportado de alguna manera por Borland en las herramientas de desarrollo Kylix y Delphi. Apache es incluido con Novell NetWare 6.5, donde es el servidor web por defecto, y en muchas distribuciones Linux. Apache es usado para muchas otras tareas donde el contenido necesita ser puesto a disposicin en una forma segura y confiable. Un ejemplo es al momento de compartir archivos desde una computadora personal hacia Internet. Un usuario que tiene Apache instalado en su escritorio puede colocar arbitrariamente archivos en la raz de documentos de Apache, desde donde pueden ser compartidos. Los programadores de aplicaciones web a veces utilizan una versin local de Apache con el fin de previsualizar y probar cdigo mientras ste es desarrollado. Microsoft Internet Information Services (IIS) es el principal competidor de Apache, as como Sun Java System Web Server de Sun Microsystems y un anfitrin de otras aplicaciones como Zeus Web Server. Algunos de los ms grandes sitios web del mundo estn ejecutndose sobre Apache. La capa frontal (front end) del motor de bsqueda Google est basado en una versin modificada de Apache, denominada Google Web Server (GWS). Muchos proyectos de Wikimedia tambin se ejecutan sobre servidores web Apache.

[edi

La mayor part de la confi raci n se reali a en el fichero apache2.conf o httpd.conf, segn el sistema donde est corriendo. C al ier cambio en este archi o requiere reiniciar el servidor, o forzar la lectura de los archivos de configuraci n nuevamente.

[edi
Art ul

Li enci
rincipal Apache License

La licencia de soft are bajo la cual el soft are de la fundaci n Apache es distribuido es una parte distintiva de la historia de Apache HTTP Server y de la comunidad de cdigo abierto. La Licencia Apache permite la distribucin de derivados de cdigo abierto y cerrado a partir de su cdigo fuente original. La Free Soft are Foundation no considera a la Licencia Apache como compatible con la versin 2 de la GNU General Public License (GPL), en la cual el soft are licenciado bajo la Apache License no puede ser integrado con soft are distribuido bajo la GPL: Este es soft are libre pero es incompatible con la GPL. La Apache Soft are License es incompatible con la GPL porque tiene un requerimiento especfico que no es incluido t en la GPL: tiene ciertos casos de terminacin de patentes que la GPL no requiere. No consideramos que dichos casos de terminacin de patentes son inherentemente una mala idea, pero a pesar de ello son incompatibles con la GNU GPL.4 Sin embargo, la versin 3 de la GPL incluye una provisin (Seccin 7e) que le permite ser compatible con licencias que tienen cl usulas de represalia de patentes, incluyendo a la Licencia Apache. El nombre Apache es una marca registrada y puede ser slo utilizada con el permiso expreso del dueo de la marca.5

PHP
PHP

Paradigma: Apareci en: Diseado por: ltima versin estable: Tipo de dato: Influido por: Sistema operativo: Licencia de software: Web:

multiparadigma 1995 PHP Group 5.3.6 (17 de marzo de 2011) dinmico C, C++, Perl, Java, Python Multiplataforma PHP License 3.01 http://www.php.net

PHP es un lenguaje de programacin interpretado, diseado originalmente para la creacin de pginas web dinmicas. Es usado principalmente para la interpretacin del lado del servidor (server-side scripti g) pero actualmente puede ser utilizado desde una interfaz de lnea de comandos o en la creacin de otros tipos de programas incluyendo aplicaciones con interfaz grfica usando las bibliotecas Qt o GTK+.

Contenido
[ocultar]
y y

y y y y

1 Visin general 2 Historia o 2.1 PHP 3 o 2.2 PHP 4 o 2.3 PHP 5 o 2.4 PHP 6 o 2.5 Versiones 3 Caractersticas de PHP o 3.1 Ventajas o 3.2 Inconvenientes 4 Ejemplo de cdigo PHP 5 Programacin orientada a objetos en PHP 6 Referencias 7 Enlaces externos

Visin general

PHP es un acrnimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdorf en 1994; sin embargo la implementacin principal de PHP es producida ahora por The PHP Group y sirve como el estndar de facto para PHP al no haber una especificacin formal. Publicado bajo la PHP License, la Free Software Foundation considera esta licencia como software libre. Puede ser desplegado en la mayora de los servidores web y en casi todos los sistemas operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra instalado en ms de 20 millones de sitios web y en un milln de servidores, el nmero de sitios en PHP ha compartido algo de su preponderante sitio con otros nuevos lenguajes no tan poderosos desde agosto de 2005. Este mismo sitio web de Wikipedia est desarrollado en PHP. Es tambin el mdulo Apache ms popular entre las computadoras que utilizan Apache como servidor web. El gran parecido que posee PHP con los lenguajes ms comunes de programacin estructurada, como C y Perl, permiten a la mayora de los programadores crear aplicaciones complejas con una curva de aprendizaje muy corta. Tambin les permite involucrarse con aplicaciones de contenido dinmico sin tener que aprender todo un nuevo grupo de funciones. Aunque todo en su diseo est orientado a facilitar la creacin de sitios webs, es posible crear aplicaciones con una interfaz grfica para el usuario, utilizando la extensin PHPQt o PHP-GTK. Tambin puede ser usado desde la lnea de rdenes, de la misma manera como Perl o Python pueden hacerlo; a esta versin de PHP se la llama PHP-CLI (Command Line Interface). Cuando el cliente hace una peticin al servidor para que le enve una pgina web, el servidor ejecuta el intrprete de PHP. ste procesa el script solicitado que generar el contenido de manera dinmica (por ejemplo obteniendo informacin de una base de datos). El resultado es enviado por el intrprete al servidor, quien a su vez se lo enva al cliente. Mediante extensiones es tambin posible la generacin de archivos PDF, Flash, as como imgenes en diferentes formatos. Permite la conexin a diferentes tipos de servidores de bases de datos tales como MySQL, PostgreSQL, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird y SQLite. XAMPP es un servidor independiente de plataforma, software libre, que consiste principalmente en la base de datos MySQL, el servidor Web Apache y los intrpretes para lenguajes de script: PHP y Perl. El nombre proviene del acrnimo de X (para cualquiera de los diferentes sistemas operativos), Apache, MySQL, PHP, Perl. El programa est liberado bajo la licencia GNU y acta como un servidor Web libre, fcil de usar y capaz de interpretar pginas dinmicas. Actualmente XAMPP esta disponible para Microsoft Windows, GNU/Linux, Solaris, y MacOS X. PHP tambin tiene la capacidad de ser ejecutado en la mayora de los sistemas operativos, tales como Unix (y de ese tipo, como Linux o Mac OS X) y Microsoft Windows, y puede interactuar con los servidores de web ms populares ya que existe en versin CGI, mdulo para Apache, e ISAPI.

PHP es una alternativa a las tecnologas de Microsoft ASP y ASP.NET (que utiliza C# y Visual Basic .NET como lenguajes), a ColdFusion de la empresa Adobe, a JSP/Java y a CGI/Perl. Aunque su creacin y desarrollo se da en el mbito de los sistemas libres, bajo la licencia GNU, existe adems un entorno de desarrollo integrado comercial llamado Zend Studio. Recientemente, CodeGear (la divisin de lenguajes de programacin de Borland) ha sacado al mercado un entorno de desarrollo integrado para PHP, denominado 'Delphi for PHP. Tambin existen al menos un par de mdulos para Eclipse, uno de los entornos ms populares.1

Historia
Fue originalmente diseado en Perl, con base en la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador dans-canadiense Rasmus Lerdorf en el ao 1994 para mostrar su currculum vtae y guardar ciertos datos, como la cantidad de trfico que su pgina web reciba. El 8 de junio de 1995 fue publicado "Personal Home Page Tools" despus de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI.
PHP 3

Dos programadores israeles del Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador sintctico (parser en ingls) en el ao 1997 y crearon la base del PHP3, cambiando el nombre del lenguaje a la forma actual. Inmediatamente comenzaron experimentaciones pblicas de PHP3 y fue publicado oficialmente en junio de 1998. Para 1999, Suraski y Gutmans reescribieron el cdigo de PHP, produciendo lo que hoy se conoce como motor Zend. Tambin fundaron Zend Technologies en Ramat Gan, Israel.
PHP 4

En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. El da 13 de julio de 2007 se anunci la suspensin del soporte y desarrollo de la versin 4 de PHP,2 a pesar de lo anunciado se ha liberado una nueva versin con mejoras de seguridad, la 4.4.8 publicada el 13 de enero del 2008 y posteriormente la versin 4.4.9 publicada el 7 de agosto de 2008. 3 Segn esta noticia [1] se dar soporte a fallos crticos hasta el 9 de agosto de 2008.
PHP 5

El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine 2.0 (o Zend Engine 2). La versin ms reciente de PHP es la 5.3.6 (17 de marzo de 2011), que incluye todas las ventajas que provee el nuevo Zend Engine 2 como:
y y y y y

Mejor soporte para la programacin orientada a objetos, que en versiones anteriores era extremadamente rudimentario. Mejoras de rendimiento. Mejor soporte para MySQL con extensin completamente reescrita. Mejor soporte a XML (XPath, DOM, etc.). Soporte nativo para SQLite.

y y y y

Soporte integrado para SOAP. Iteradores de datos. Manejo de excepciones. Mejoras con la implementacin con Oracle.

An se siguen publicando versiones de la rama 5.2.X, siendo publicada la versin 5.2.14 el 22 de julio de 2010, aunque la mayora son actualizaciones de seguridad
PHP 6

Est previsto el lanzamiento en breve de la rama 6 de PHP. Cuando se lance esta nueva versin quedarn solo dos ramas activas en desarrollo (PHP 5 y 6), pues se abandon el desarrollo y soporte de PHP 4 el 13 de julio de 2007.4 Las diferencias en comparacin con PHP 5 son:
y y y y y y y

Compatible con Unicode; Limpieza de funcionalidades obsoletas como register_globals, safe_mode, etc; PECL y eliminacin de soporte ereg; Mejoras en orientacin a objetos; Inclusin en el ncleo de xmlReader y xmlWriter as como Fileinfo; return por referencia devuelve un error; Se retir el soporte de las bibliotecas FreeType1 y GD1;

Versiones
Versin Fecha Cambios ms importantes Oficialmente llamado "Herramientas personales de trabajo (PHP Tools)". Es el primer uso del nombre "PHP". Considerado por el creador como la "ms rpida y simple herramienta" para la creacin de pginas webs dinmicas . Desarrollo movido de una persona a muchos desarrolladores. Zeev Suraski y Andi Gutmans reescriben la base para esta versin. Se aade un sistema ms avanzado de anlisis de etiquetas en dos fases anlisis/ejecucin llamado el motor Zend. Introducidas las variables superglobals ($_GET, $_SESSION, etc.). Se deshabilitan register_globals por defecto.

PHP 1.0 8 de junio de 1995 PHP Version 16 de abril de 1996 2 (PHP/FI)

PHP 3.0 6 de junio de 1998

PHP 4.0 22 de mayo de 2000

PHP 4.1 10 de diciembre de 2001 PHP 4.2 22 de abril de 2002

PHP 4.3 27 de diciembre de 2002 Introducido la CLI, en adicin a la CGI. PHP 4.4 11 de julio de 2005 PHP 5.0 13 de julio de 2004 PHP 5.1 25 de noviembre de 2005 PHP 5.2 2 de noviembre de 2006 PHP 5.2.4 PHP 5.2.5 PHP 5.2.8 PHP 5.2.9 PHP 5.2.12 30 de agosto de 2007 Versin centrada en mejorar la estabilidad (+60 errores solucionados). Habilitado el filtro de extensiones por defecto. Motor Zend II con un nuevo modelo de objetos.

8 de noviembre de 2007

8 de diciembre de 2008 Diversas mejoras en el mbito de la seguridad (+50 errores solucionados). Diversas mejoras en el mbito de la seguridad (+50 errores solucionados). namespaces, late static binding, closures, optional garbage collection for cyclic references, nuevas extensiones (+140 errores solucionados). Diversas mejoras en el mbito de la seguridad (36 errores solucionados). Diversas mejoras en el mbito de la seguridad (99 errores solucionados). Diversas mejoras en el mbito de la seguridad y estabilidad. (ms de 100 errores solucionados). Diversas mejoras en el mbito de la seguridad y estabilidad. (105 errores solucionados). Esta versin soluciona un problema crtico, reportado como bug # 53632 PHP y CVE-2010-4645, relacionado con las conversiones de cadena a double. Esta versin soluciona un problema crtico:#54193,#54055,#54002,#53885,#54247,Mejora la

26 de febrero de 2009

17 de diciembre de 2009

PHP 5.3 30 de junio de 2009

PHP 5.3.1 PHP 5.3.2 PHP 5.3.3 PHP 5.3.4 PHP 5.3.5 PHP 5.3.6

19 de noviembre de 2009

4 de marzo de 2010

22 de julio de 2010

10 de diciembre de 2010

6 de enero de 2011

7 de marzo de 2011

seguridad con el anlisis del protocolo fastcgi con fpm SAPI. PHP 6 S/D

Caractersticas de PHP
Ventajas
y y y

y y y

y y y y y y

Es un lenguaje multiplataforma. Orientado al desarrollo de aplicaciones web dinmicas con acceso a informacin almacenada en una base de datos. El cdigo fuente escrito en PHP es invisible al navegador web y al cliente ya que es el servidor el que se encarga de ejecutar el cdigo y enviar su resultado HTML al navegador. Esto hace que la programacin en PHP sea segura y confiable. Capacidad de conexin con la mayora de los motores de base de datos que se utlizan i en la actualidad, destaca su conectividad con MySQL y PostgreSQL. Capacidad de expandir su potencial utilizando mdulos (llamados ext's o extensiones). Posee una amplia documentacin en su sitio web oficial, entre la cual se destaca que todas las funciones del sistema estn explicadas y ejemplificadas en un nico archivo de ayuda. Es libre, por lo que se presenta como una alternativa de fcil acceso para todos. Permite aplicar tcnicas de programacin orientada a objetos. Biblioteca nativa de funciones sumamente amplia e incluida. No requiere definicin de tipos de variables aunque sus variables se pueden evaluar tambin por el tipo que estn manejando en tiempo de ejecucin. Tiene manejo de excepciones (desde PHP5). Si bien PHP no obliga a quien lo usa a seguir una determinada metodologa a la hora de programar (muchos otros lenguajes tampoco lo hacen), aun hacindolo, el programador puede aplicar en su trabajo cualquier tcnica de programacin o de desarrollo que le permita escribir cdigo ordenado, estructurado y manejable. Un ejemplo de esto son los desarrollos que en PHP se han hecho del patrn de diseo Modelo Vista Controlador (MVC), que permiten separar el tratamiento y acceso a los datos, la lgica de control y la interfaz de usuario en tres componentes independientes.

Inconvenientes
y

Como es un lenguaje que se interpreta en ejecucin, para ciertos usos puede resultar un inconveniente que el cdigo fuente no pueda ser ocultado. La ofuscacin es una tcnica que puede dificultar la lectura del cdigo pero no la impide y, en ciertos casos, representa un costo en tiempos de ejecucin.

Ejemplo de cdigo PHP


En el siguiente ejemplo se muestra el tpico programa Hola mundo, que es una simple impresin por pantalla de ese mensaje:
<?php

$mivariable = 'Hola Mundo' ; echo $mivariable ; ?>

El ejemplo anterior escribira simplemente "Hola Mundo" (sin comillas) en la pgina web. Es importante recordar que todo bloque de cdigo PHP debe estar dentro de <?php y ?>, que son las etiquetas de apertura y cierre, respectivamente; o simplemente de una forma ms corta <? <CDIGO_PHP> ?> (siempre que la directiva short_open_tag est activada),5 muy parecido a las etiquetas en ASP <% <CDIGO_ASP> %>. Existen algunas excepciones por las cuales tanto la etiqueta de cierre como el punto y coma es opcional, como podemos ver en php.net:
<?php echo 'Esto es una prueba' ; ?> <?php echo 'Esto es una prueba' ?> <?php echo 'Hemos omitido la ltima etiqueta de cerrado' ;

"La etiqueta de fin de bloque de PHP automticamente implica un punto y coma. No se tiene que usar punto y coma para cerrar la ltima lnea de cdigo de PHP" "La etiqueta de fin de bloque es opcional al final del archivo y es til omitirlo cuando se utilizan sentencias include() o require(), para que no se produzcan espacios en blanco al final de los archivos cuando se quieren mandar cabeceras de http. Tambin sirve cuando se captura la salida con output buffering y no se desean espacios innecesarios al final de partes generadas por archivos includos." A continuacin un ejemplo de envo y recepcin de datos en una misma pgina con PHP:
<html> <head> <title>Ejemplo de uso simple en envo y recepcin de parmetros con PHP</title> </head> <body> <?php // Si existe la variable $_POST['comida'], entonces muestra la comida favorita if (isset($_POST['comida'])) { echo 'Hola, ' . $_POST['nombre'] . ', tu comida favorita es: ' . $_POST['comida']; } else { // Si no, muestra un formulario solicitando la comida favorita ?> <form method="POST" action=" <?php echo $_SERVER['PHP_SELF' ]; ?>"> Cul es tu nombre? <input type="text" name="nombre" /> Cul es tu comida favorita? <select name="comida"> <option value="Spaguetis">Spaguetis</option>

<option value="Asado">Asado</option> <option value="Pizza">Pizza</option> </select> <input type="submit" name="muestra" value="Seguir" /> </form> <?php } //Fin del bloque else ?> </body> </html>

En este cdigo es posible observar las siguientes caractersticas:


y

y y

y y

Las variables enviadas por un formulario utilizando el mtodo POST, son recibidas en el lenguaje dentro de la matriz $_POST, lo cual facilita la obtencin de este tipo de datos. Este mismo mtodo es utilizado por el lenguaje para todas las fuentes de informacin en una aplicacin web, tales como cookies en la matriz $_COOKIES , variables de URL en $_GET (que en formularios puede servir para guardar los datos), variables de sesin utilizando $_SESSION , y variables del servidor y del cliente por medio de la matriz $_SERVER . Las variables que estn dentro de las cadenas $_POST, $_GET y $_COOKIE pueden encontrarse en la cadena $_REQUEST , ya que sta resume las 3 anteriores. El cdigo PHP est incrustado dentro del HTML e interacta con el mismo, lo que permite disear la pgina Web en un editor comn de HTML y aadir el cdigo dinmico dentro de las etiquetas <?php ?>. El resultado muestra y oculta ciertas porciones del cdigo HTML en forma condicional. Es posible utilizar funciones propias del lenguaje para aplicaciones Web como htmlentitites() , que convierte los caracteres que tienen algn significado especial en el cdigo HTML o que podran desplegarse errneamente en el navegador como acentos o diresis, en sus equivalentes en formato HTML.

Todas las variables en PHP llevan el smbolo de dlar como prefijo (ejemplo: $variable1, $variable2, $variable3...,$variableN), los tipos de variable no es necesario declararlas, ya que a medida que se usan en la aplicacin el servidor reconoce de que tipo son. Para mostrar una cadena (en ingls string) debe estar dentro de comillas dobles o simples (ejemplo: "Hola Mundo", 'Lo que quiero mostrar'). Cabe destacar que si se desea mostrar el smbolo " o ' debe encerrarse en el otro tipo de comillas ("Este es 'mi' mundo" , 'Sr. Soborno "guio guio".' ) o usarse el smbolo de escape ('Jhon\'s child' , "Ocurre \"algo\" raro aqu" ). Toda lnea de instruccin debe terminar en un punto y coma (;), al igual que el lenguaje C salvo en los ejemplos anteriormente comentados. Para insertar un comentario de una sola lnea, debe empezar por // o por #. El resto de la lnea es tratado entonces como un comentario. Para insertar un bloque de comentario, de una o ms lneas, se utiliza la combinacin /* y */, por ejemplo:
<?php $frutas = 5; $frutas += 3; # sumamos 3 a $frutas

echo "Compr $frutas piezas de fruta." ; // Dobles comillas evala $variables // Lo anterior es equivalente a echo 'Compr ' . $frutas . ' piezas de fruta.' ; /* Esto es un comentario multi -lnea si! otra lnea de comentarios */ echo 'Hola mundo!' ; ?>

Programacin orientada a objetos en PHP


PHP no es en s un lenguaje de programacin orientada a objetos, pero desde hace ya unas versiones se ha implementado el uso de clases y objetos. Aqu tenemos un ejemplo de una clase sencilla en PHP:
class Clase { var $Una_variable ; //Creamos las variables var $Otra_variable ; function Clase($var1, $var2){ //Creamos un constructor que defina las variables "Una_variable" y "Otra_variable" dentro de la clase. $this->Una_variable = $var1; $this->Otra_variable = $var2; } }

Ahora veremos como se llama a la clase previamente creada:


$clase = new Clase("Esta es la variable 1" , "Esta es la variable 2" );

El ejemplo anterior es vlido para php4, el mismo ejemplo escrito php5, vara en el nombre del constructor y en la forma en como se declara la variable.
<?php class Clase { public $Una_variable ; //Creamos las variables para php5 public $Otra_variable ; function __construct ($var1, $var2){ //Creamos un constructor que defina las variables "Una_variable" y "Otra_variable" dentro de la clase. $this->Una_variable = $var1; $this->Otra_variable = $var2; } } $instancia = new Clase('rojo','blanco'); echo "El color de la variable \$Una_variable es : " . $instancia >Una_variable . " El color de la otra variable \$Otra_variable es: " . $instancia ->Otra_variable ; ?>

El valor public indica que la propiedad o el mtodo est n disponible para todo cdigo que desee acceder a los mismos. PHP 5 ofrece tres niveles de visibilidad para utilizar en clases: public, private, protected. A la vez, cambia la forma en la que se declara el constructor de la clase, ya que en PHP 4 se usaba el mismo nombre de esta, y en PHP 5 se crea el mtodo especial __construct.

PostgreSQL
Post

QL

Post e SQL Glob l Develop ent G oup www.po g q .o g Info in eneral 90


% 10) ('& "          

lti a versin estable

20 e se

Sistema operativo Li en ia En espaol


! !

Multiplataforma BS

PostgreSQL es un sistema de gestin de base de datos relacional orientada a objetos y libre, publicado bajo la licencia BSD. Como muchos otros proyectos de cdigo abierto, el desarrollo de PostgreSQL no es manejado por una empresa y/o persona, sino que es dirigido por una comunidad de

32

Gnero

BMS



Des

oll do

! 

 #

e e 2010

desarrolladores que trabajan de forma desinteresada, altruista, libre y/o apoyados por organizaciones comerciales. Dicha comunidad es denominada el PGDG (PostgreSQL Global Development Gro p).

Contenido
[ocultar]
y y y

y y y y

1 Nombre del producto 2 Historia 3 Caractersticas o 3.1 Alta concurrencia o 3.2 Amplia variedad de tipos nativos o 3.3 Otras caractersticas o 3.4 Funciones 4 Productos alrededor de PostgreSQL o 4.1 Alternativas Comerciales o 4.2 GIS o 4.3 Replicacin o 4.4 Herramientas de administracin o 4.5 Bsqueda de texto o 4.6 XML 5 Usuarios destacados 6 Premios 7 Referencias 8 Enlaces externos

[editar] Nombre del producto


El uso de caracteres en mayscula en el nombre PostgreSQL puede confundir a algunas personas a primera vista. Las distintas pronunciaciones de "SQL" pueden llevar a confusin. Los desarrolladores de PostgreSQL lo pronuncian /po st s kju l/;. Es tambin comn or abreviadamente como simplemente "Postgres", el que fue su nombre original. Debido a su soporte del estndar SQL entre la mayor parte de bases de datos relacionales, la comunidad consider cambiar el nombre al anterior Postgres. Sin embargo, el PostgreSQL Core Team anunci en 2007 que el producto seguira llamndose PostgreSQL. El nombre hace referencia a los orgenes del proyecto como la base de datos "post-Ingres", y los autores originales tambin desarrollaron la base de datos Ingres.

[editar] Historia
PostgreSQL ha tenido una larga evolucin, la cual se inicia en 1982 con el proyecto Ingres en la Universidad de Berkeley. Este proyecto, liderado por Michael Stonebraker, fue uno de los primeros intentos en implementar un motor de base de datos relacional. Despus de haber trabajado un largo tiempo en Ingres y de haber tenido una experiencia comercial con l mismo, Michael decidi volver a la Universidad en 1985 para trabajar

en un nuevo proyecto sobre la experiencia de Ingres, dicho proyecto fue llamado postingres o simplemente POSTGRES. El proyecto post-ingres pretenda resolver los problemas con el modelo de base de datos relacional que haban sido aclarados a comienzos de los aos 1980. El principal de estos problemas era la incapacidad del modelo relacional de comprender "tipos", es decir, combinaciones de datos simples que conforman una nica unidad. Actualmente estos son llamados objetos. Se esforzaron en introducir la menor cantidad posible de funcionalidades para completar el soporte de tipos. Estas funcionalidades incluan la habilidad de definir tipos, pero tambin la habilidad de describir relaciones - las cuales hasta ese momento eran ampliamente utilizadas pero mantenidas completamente por el usuario. En Postgres la base de datos comprenda las relaciones y poda obtener informacin de tablas relacionadas utilizando reglas. Postgres us muchas ideas de Ingres pero no su cdigo. La siguiente lista muestra los hitos ms importantes en la vida del proyecto Postgres.
y y y y y y y

1986: se publicaron varios papers que describan las bases del sistema. 1988: ya se contaba con una versin utilizable. 1989: el grupo publicaba la versin 1 para una pequea comunidad de usuarios. 1990: se publicaba la versin 2 la cual tena prcticamente reescrito el sistema de reglas. 1991: publicacin de la versin 3, esta aada la capacidad de mltiples motores de almacenamiento. 1993: crecimiento importante de la comunidad de usuarios, la cual demandaba ms caractersticas. 1994: despus de la publicacin de la versin 4, el proyecto termin y el grupo se disolvi.

Despus de que el proyecto POSTGRES terminara, dos graduados de la universidad, Andrew Yu y Jolly Chen, comenzaron a trabajar sobre el cdigo de POSTGRES, esto fue posible dado que POSTGRES estaba licenciado bajo la BSD, y lo primero que hicieron fue aadir soporte para el lenguaje SQL a POSTGRES, dado que anteriormente contaba con un intrprete del lenguaje de consultas QUEL (basado en Ingres), creando as el sistema al cual denominaron Postgres95. Para el ao 1996 se unieron al proyecto personas ajenas a la Universidad como Marc Fournier de Hub.Org Networking Services, Bruce Momjian y Vadim B. Mikheev quienes proporcionaron el primer servidor de desarrollo no universitario para el esfuerzo de desarrollo de cdigo abierto y comenzaron a trabajar para estabilizar el cdigo de Postgres95. En el ao 1996 decidieron cambiar el nombre de Postgres95 de tal modo que refleje la caracterstica del lenguaje SQL y lo terminaron llamando PostgreSQL, cuya primera versin de cdigo abierto fue lanzada el 1 de agosto de 1996. La primera versin formal de PostgreSQL (6.0) fue liberada en enero de 1997. Desde entonces, muchos desarrolladores entusiastas de los motores de base de datos se unieron al proyecto, coordinaron va Internet y entre todos comenzaron a incorporar muchas caractersticas al motor.

Aunque la licencia permita la comercializacin de PostgreSQL, el cdigo no se desarroll en principio con fines comerciales, algo sorprendente considerando las ventajas que PostgreSQL ofreca. La principal derivacin se origin cuando Paula Hawthtorn (un miembro del equipo original de Ingres que se pas a Postgres) y Michael Stonebraker conformaron Illustra Information Technologies para comercializar Postgres. En 2000, ex inversionistas de Red Hat crearon la empresa Great Bridge para comercializar PostgreSQL y competir contra proveedores comerciales de bases de datos. Great Bridge auspici a varios desarrolladores de PostgreSQL y don recursos de vuelta a la comunidad, pero a fines de 2001 cerr debido a la dura competencia de compaas como Red Hat y pobres condiciones del mercado. En 2001, Command Prompt, Inc. lanz Mammonth PostgreSQL, la ms antigua distribucin comercial de PostgreSQL. Contina brindando soporte a la comunidad PostgreSQL a travs del auspicio de desarrolladores y proyectos, incluyendo PL/Perl, PL/php y el alojamiento de proyectos de comunidades como PostgreSQL Build Farm. En enero de 2005, PostgreSQL recibi apoyo del proveedor de base de datos Pervasive Software, conocido por su producto Btrieve que se utilizaba en la plataforma Novell Netware. Pervasive anunci soporte comercial y participacin comunitaria y logr algo de xito. Sin embargo, en julio de 2006 dej el mercado de soporte de PostgreSQL. A mediados de 2005 otras dos compaas anunciaron planes para comercializar PostgreSQL con nfasis en nichos separados de mercados. EnterpriseDB aadi funcionalidades que le permitan a las aplicaciones escritas para trabajar con Oracle ser ms fciles de ejecutar con PostgreSQL. Greenplum contribuy mejoras directamente orientadas a aplicaciones de Data Warehouse e Inteligencia de negocios, incluyendo el proyecto BizGres. En octubre de 2005, John Loiacono, vicepresidente ejecutivo de software en Sun Microsystems coment: "No estamos yendo tras el OEM de Microsoft pero estamos viendo a PostgreSQL ahora", aunque no se dieron especificaciones en ese momento. Para noviembre de 2005, Sun Solaris 10 (lanzamiento 6/06) inclua PostgreSQL. En agosto de 2007 EnterpriseDB anunci el Postgres Resource Center y EnterpriseDB Postgres, diseados para ser una completamente configurada distribucin de PostgreSQL incluyendo muchos mdulos contribuidos y agregados. EnterpriseDB Postgres fue renombrado Postgres Plus en marzo de 2008. El proyecto PostgreSQL contina haciendo lanzamientos principales anualmente y lanzamientos menores de reparacin de bugs, todos disponibles bajo la licencia BSD, y basados en contribuciones de proveedores comerciales, empresas aportantes y programadores de cdigo abierto mayormente.

[editar] Caractersticas
Algunas de sus principales caractersticas son, entre otras:

[editar] Alta concurrencia

Mediante un sistema denominado MVCC (Acceso concurrente multiversin, por sus siglas en ingls) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una visin consistente de lo ltimo a lo que se le hizo commit. Esta estrategia es superior al uso de bloqueos por tabla o por filas comn en otras bases, eliminando la necesidad del uso de bloqueos explcitos.....
[editar] Amplia variedad de tipos nativos

PostgreSQL provee nativamente soporte para:


y y y y y y y

Nmeros de precisin arbitraria. Texto de largo ilimitado. Figuras geomtricas (con una variedad de funciones asociadas). Direcciones IP (IPv4 e IPv6). Bloques de direcciones estilo CIDR. Direcciones MAC. Arrays.

Adicionalmente los usuarios pueden crear sus propios tipos de datos, los que pueden ser por completo indexables gracias a la infraestructura GiST de PostgreSQL. Algunos ejemplos son los tipos de datos GIS creados por el proyecto PostGIS.
[editar] Otras caractersticas
y y

Claves ajenas tambin denominadas Llaves ajenas o Claves Forneas (foreign keys). Disparadores (triggers): Un disparador o trigger se define como una accin especfica que se realiza de acuerdo a un evento, cuando ste ocurra dentro de la base de datos. En PostgreSQL esto significa la ejecucin de un procedimiento almacenado basado en una determinada accin sobre una tabla especfica. Ahora todos los disparadores se definen por seis caractersticas: o El nombre del disparador o trigger o El momento en que el disparador debe arrancar o El evento del disparador deber activarse sobre... o La tabla donde el disparador se activar o La frecuencia de la ejecucin o La funcin que podra ser llamada

Entonces combinando estas seis caractersticas, PostgreSQL le permitir crear una amplia funcionalidad a travs de su sistema de activacin de disparadores (triggers).
y y y y y

Vistas. Integridad transaccional. Herencia de tablas. Tipos de datos y operaciones geomtricas. Soporte para transacciones distribuidas. Permite a PostgreSQL integrase en un sistema distribuido formado por varios recursos (p.ej, una base de datos PostgreSQL, otra Oracle, una cola de mensajes IBM MQ JMS y un ERP SAP) gestionado por un servidor de aplicaciones donde el xito ("commit") de la transaccin goblal es el resultado del

xito de las transacciones locales. Ms informacin en ingls en http://www.theserverside.com/discussions/thread.tss?thread_id=21385#95297y en http://java.sun.com/javaee/technologies/jta/index.jsp.

[editar] Funciones

Bloques de cdigo que se ejecutan en el servidor. Pueden ser escritos en varios lenguajes, con la potencia que cada uno de ellos da, desde las operaciones bsicas de programacin, tales como bifurcaciones y bucles, hasta las complejidades de la programacin orientada a objetos o la programacin funcional. Los disparadores (triggers en ingls) son funciones enlazadas a operaciones sobre los datos. Algunos de los lenguajes que se pueden usar son los siguientes:
y y y y y y y y y y y y

Un lenguaje propio llamado PL/PgSQL (similar al PL/SQL de oracle). C. C++. Java PL/Java web. PL/Perl. plPHP. PL/Python. PL/Ruby. PL/sh. PL/Tcl. PL/Scheme. Lenguaje para aplicaciones estadsticas R por medio de PL/R.

PostgreSQL soporta funciones que retornan "filas", donde la salida puede tratarse como un conjunto de valores que pueden ser tratados igual a una fila retornada por una consulta (query en ingls). Las funciones pueden ser definidas para ejecutarse con los derechos del usuario ejecutor o con los derechos de un usuario previamente definido. El concepto de funciones, en otros DBMS, son muchas veces referidas como "procedimientos almacenados" (stored procedures en ingls).

[editar] Productos alrededor de PostgreSQL


El PGDG solo desarrolla el Motor de Datos y un nmero pequeo de utilidades, para potenciar el trabajo con PostgreSQL suele ser necesario aadir utilidades externas creadas especialmente para este motor, algunas de estas herramientas son:
[editar] Alternativas Comerciales

Gracias a su licencia BSD, se permite la utilizacin del cdigo para ser comercializado. Uno de los casos ejemplo es la de Enterprise DB (Postgresql Plus), la cual incluye varios agregados y una interfaz de desarrollo basada en Java. Entre otras empresas que

utilizan Postgresql para comercializar se encuentra CyberTech (alemania), con su producto CyberCluster.
[editar] GIS PostGIS
Extensin que aade soporte de objetos geogrficos a PostgreSQL y permite realizar anlisis mediante consultas SQL espaciales o mediante conexin a aplicaciones GIS (Sistema de Informacin Geogrfica).

[editar] Replicacin PgCluster


Replicacin multi maestro. Slony-I Replicacin maestro esclavo. PyReplica Replicacin maestro esclavo y multi maestro asincrnica.

[editar] Herramientas de administracin PgAdmin3


Entorno de escritorio visual. PgAccess Entorno de escritorio visual. PhpPgAdmin Entorno web. psql Cliente de consola. Database Master Entorno de escritorio visual.

[editar] Bsqueda de texto Full text search


Incluido en el ncleo a partir de la versin 8.3. Via Tsearch2 y OpenFTS para versiones anteriores a la 8.3.

[editar] XML XML/XSLT soporte

MySQL
MySQL

Instalador de MySql Server 5.0

Desarrollador Sun Microsystems hasta febrero de 2008 MySQL AB) http://www sql com Informaci n general ltima versi n estable Gnero Programado en 5.5.9
2 de junio de 2010
9 A@ 9

Sistema operativo Multiplataforma Licencia En espaol GPL o Uso comercial ?

MySQL es un sistema de gestin de bases de datos relacional, multihilo y multiusuario con ms de seis millones de instalaciones.1 MySQL AB desde enero de 200 una subsidiaria de Sun Microsystems y sta a su vez de Oracle Corporation desde abril de 2009 desarrolla MySQL como soft are libre en un esquema de licenciamiento dual. Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productosprivativos deben

Via

ath e te siones en la seccin contrib.

Sistema administrador de bases de datos relacionales C, C

comprar a la empresa una licencia especfica que les permita este uso. Est des arrollado en su mayor parte en ANSI C. Al contrario de proyectos como Apache, donde el soft are es desarrollado por una comunidad pblica y los derechos de autor del cdigo estn en poder del autor individual, MySQL es patrocinado por una empresa privada, que posee el copyrig de ht la mayor parte del cdigo. Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Adems de la venta de licencias privativas, la compaa ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran va Internet. MySQL AB fue fundado por David Axmark, Allan Larsson y Michael Widenius.

enguajes de programaci n
Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de programacin, acceder a las bases de datos MySQL, incluyendo C, C , C , Pascal, Delphi (via dbExpress), Eiffel, Smalltalk, Java (con una implementacin nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby,Gambas, REALbasic (Mac y Linux), (x)Harbour (Eagle1), FreeBASIC, y Tcl; cada uno de estos utiliza una API especfica. Tambin existe una interfaz ODBC, llamado MyODBC que permite a cualquier lenguaje de programacin que soporte ODBC comunicarse con las bases de datos MySQL. Tambin se puede acceder desde el sistema SAP, lenguaje ABAP.

[editar] Aplicaciones

Toma de pantalla programa de Monitoreo Mtop. MySQL es muy utilizado en aplicaciones web, como Drupal o phpBB, en plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de seguimiento de errores como Bugzilla. Su popularidad como aplicacin web est muy ligada a PHP, que a menudo aparece en combinacin con MySQL. MySQL es una base de datos muy rpida en la lectura cuando utiliza el motor no transaccionalMyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificacin. En aplicaciones web hay baja concurrencia en la modificacin de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones. Sea cual sea el entorno en el que va a utilizar MySQL, es importante monitorizar de antemano el rendimiento para detectar y corregir errores tanto de SQL como de programacion.3

Tipos de compilacin del servidor

Hay tres tipos de compilacin del servidor MySQL:


B

y y

Estndar: Los binarios estndar de MyS L son los recomendados para la mayora de los usuarios, e incluyen el motor de almacenamiento InnoDB. Max (No se trata de MaxDB, que es una cooperacin con SAP): Los binarios incluyen caractersticas adicionales que no han sido lo bastante probadas o que normalmente no son necesarias. MySQL-Debug: Son binarios que han sido compilados con informacin de depuracin extra. No debe ser usada en sistemas en produccin porque el cdigo de depuracin puede reducir el rendimiento.

Você também pode gostar