La base de datos PostrgeSQL es un producto Open Source y disponible sin costo. Postgres, desarrollado originalmente en el Deportamento de Ciencias de Computación de UC Berkeley, fue pionero en muchos de los conceptos de objetos y relacionales que ahora están apareciendo en algunas bases de datos comerciales. Provee soporte para lenguajes SQL92/SQL99, transacciones, integridad referencial, procedimientos almacenados y extensibilidad de tipos. PostgreSQL es un descendiente de código abierto de su código original de Berkeley.
Para hacer uso del soporte PostgreSQL, necesita PostgreSQL 6.5 o posterior, PostgreSQL 7.0 o posterior para habilitar todas las características del módulo. PostgreSQL soporta varias codificaciones de caracteres, incluyendo codificación de caracteres multibyte. Su versión actual, asi como más información sobre PostgreSQL se encuentra disponible en http://www.postgresql.org/ y http://techdocs.postgresql.org/.
In order to enable PostgreSQL support, --with-pgsql[=DIR] is required when you compile PHP. DIR is the PostgreSQL base install directory, defaults to /usr/local/pgsql. If shared object module is available, PostgreSQL module may be loaded using extension directive in php.ini or dl() function.
El comportamiento de estas funciones está afectado por los valores definidos en php.ini.
Tabla 1. PostgreSQL configuration options
Name | Default | Changeable |
---|---|---|
pgsql.allow_persistent | "1" | PHP_INI_SYSTEM |
pgsql.max_persistent | "-1" | PHP_INI_SYSTEM |
pgsql.max_links | "-1" | PHP_INI_SYSTEM |
pgsql.auto_reset_persistent | "0" | PHP_INI_SYSTEM |
pgsql.ignore_notice | "0" | PHP_INI_ALL |
pgsql.log_notice | "0" | PHP_INI_ALL |
A continuación se presenta una corta explicación de las directivas de configuración.
Whether to allow persistent Postgres connections.
The maximum number of persistent Postgres connections per process.
The maximum number of Postgres connections per process, including persistent connections.
Detect broken persistent links with pg_pconnect(). Needs a little overhead.
Whether or not to ignore PostgreSQL backend notices.
Whether or not to log PostgreSQL backends notice messages. The PHP directive pgsql.ignore_notice must be off in order to log notice messages.
Aviso |
El uso del módulo PostgreSQL con PHP 4.0.6 no se recomienda debido a un fallo en el código de gestión de mensajes tipo noticia. Use la versión 4.1.0 o posterior. |
Aviso | ||||||||||||||||||||||||||||||||||||||||||||||
Los nombres de funciones PostgreSQL serán modificados en el lanzamiento 4.2.0 para adoptar los estándares de código actuales. La mayoría de nombres nuevos tendrán signos de subrayado adicionales, p.ej. pg_lo_open(). Algunas funciones son renombradas a nuevos nombres por razones de consistencia, p.ej. pg_exec() a pg_query(). Los nombres antiguos pueden ser usados en 4.2.0 y algunas versiones subsiguientes, pero pueden ser eliminados en el futuro. Tabla 2. Nombres de función modificados
La vieja sintaxis pg_connect()/pg_pconnect() será marcada como obsoleta para dar soporte a conexiones asincrónicas en el futuro. Por favor use una cadena de conexión para pg_connect() y pg_pconnect(). |
No todas las funciones son soportadas en todas las instalaciones. Depende de su versión de libpq (la interfaz C de Cliente PostrgeSQL) y de cómo fue compilado libpq. Si hace falta alguna función, libpq no soporta la característica requerida para la función.
También es importante que no use una versión de libpq más antigua que la del Servidor PostgreSQL al que se conectará. Si usa una versión de libpq más antigua que la que el Servidor PostgreSQL espera, puede tener problemas.
A partir de la versión 6.3 (03/02/1998) PostgreSQL usa sockets de dominio unix por defecto. El puerto TCP NO será abierto por defecto. A continuación se presenta una tabla que describe estas posibilidades de conexión nuevas. Este socket se encontrará en /tmp/.s.PGSQL.5432. Esta opción puede habilitarse con la bandera '-i' a postmaster y su significado es: "escuche en sockets TCP/IP asi como en sockets de dominio Unix".
Tabla 3. Postmaster y PHP
Postmaster | PHP | Status |
---|---|---|
postmaster & | pg_connect("dbname=NombreDeMiBD"); | OK |
postmaster -i & | pg_connect("dbname=NombreDeMiBD"); | OK |
postmaster & | pg_connect("host=localhost dbname=NombreDeMiBD"); | No fue posible conectarse con el servidor PostgreSQL: connectDB() falló: ¿Está corriendo postmaster y acepta conexiones TCP/IP (con -i) en 'localhost' en el puerto '5432'? en /ruta/hacia/archivo.php en la línea 20. |
postmaster -i & | pg_connect("host=localhost dbname=NombreDeMiBD"); | OK |
Puede establecerse una conexión con el servidor PostgreSQL con el siguiente juego de pares de valores en la cadena de comando: $con = pg_connect("host=miHost port=miPuerto tty=miTTY options=misOpciones dbname=miBD user=miUsuario password=miContrasenya ");
La sintaxis previa de: $conn = pg_connect ("host", "port", "options", "tty", "dbname") ha sido marcada como obsoleta.
Las variables de entorno afectan el comportamiente de servidor/cliente de PostgreSQL. Por ejemplo, el módulo PostgreSQL buscará la variable de entorno PGHOSN cuando el nombre de host sea omitido en la cadena de conexión. Las variables de entorno soportadas son diferentes entre versión y versión. Refiérase el Manual de Programador de PostgreSQL (libpq - Variables de Entorno) para más detalles.
Asegúrese de establecer las variables de entorno para el usuario apropiado. Use $_ENV o getenv() para chequear cuáles variables de entorno están disponibles en el proceso actual.
Nota: PostgreSQL convierte automáticamente todos los identificadores (p.ej. nombres de tablas/columnas) a valores en minúsculas. Para lograr que reconozca valores en mayúsculas, debe rodear siempre el identificador entre comillas.
Estas constantes están definidas por esta extensión y estarán disponibles solamente cuando la extensión ha sido o bien compilada dentro de PHP o grabada dinámicamente en tiempo de ejecución.
A partir de PostgreSQL 7.1.0, puede almacenar hasta 1GB en un campo de tipo texto. En versiones anteriores, éste se encontraba limitado al tamaño de bloque (por defecto 8KB, el máximo era 32KB, definido en tiempo de compilación)
Para usar la interfaz de objetos grandes (lo), es necesario ubicar las funciones de objetos grandes en el interior de un bloque de transacción. Un bloque de transacción comienza con una sentencia SQL BEGIN y, si la transacción fue válida, termina con COMMIT o END. Si la transacción falla, ésta debe ser cerrada con ROLLBACK o ABORT.