Foros del Web » Programando para Internet » PHP »

Sesion conexion BD compartida entre CMS y script externos?

Estas en el tema de Sesion conexion BD compartida entre CMS y script externos? en el foro de PHP en Foros del Web. Hola, Me está pasando algo raro, supongo que será por desconocimiento de como funciona, pero a ver si me podéis ayudar. Tengo un trozo de ...
  #1 (permalink)  
Antiguo 09/10/2014, 05:02
 
Fecha de Ingreso: julio-2010
Mensajes: 134
Antigüedad: 7 años, 5 meses
Puntos: 0
Sesion conexion BD compartida entre CMS y script externos?

Hola,

Me está pasando algo raro, supongo que será por desconocimiento de como funciona, pero a ver si me podéis ayudar.

Tengo un trozo de código de un cms el cual e personalizado, y he llamado a un script php que está fuera de la carpeta del cms, es decir, en mitad del cms he añadido esto:

Código PHP:
// Codigo del CMS
//.
//.
//Mi codigo
include_once  '/var/www/vhosts/misscripts/v1/Manejador.php';
        
$maneja = new ManejadorNotificaciones;
        
$maneja->mensaje_privado();
//Fin de mi Codigo
//.
//.Codigo del CMS 
En el código del script es el siguieten:
Código PHP:
$conexBD mysql_connect('localhost''xxxxx''xxxxx');
        if (!
$conexBD) {
                die(
'No se pudo conectar a la BD: ' mysql_error());
        }
        
//$prov = $prov . "db";
        
mysql_select_db('misdatosexternos');
        
mysql_set_charset('utf8');

// Seguidamente hago una consulta (no la he puesto para resumir) y cierro la conexión:
                
mysql_close($conexBD); 
El problema es el siguiente:
Poniendo controles y testeando he encontrado, si no me equivoco, que el problema es que el CMS y este script usan la misma ¿sesión? de conexión a la Bd.
Cuando cierro con mysql_close al volver al CMS, esta sin conexión a la bd, y peta...

Para confirmarlo añadi esta línea debajo de la llamada a la función externa:
Código PHP:
mysql_select_db($bddelCMS); 

Y ya si funciono todo correctamente.
El problema es que yo no quiero quitarle el mysql_close al script externo ya que ese script en ocasiones se lanzara desde el CMS, y en otras, se llamará directamente. En el caso del CMS no me preocupa que se quede abierto, pero cuando se lanza solo el script lo correcto es que se cierre.

Y la pregunta importante, por que están utilizando la misma sesión de conexión a la bd tanto el script externo como el CMS?
¿Qué se me escapa?
  #2 (permalink)  
Antiguo 09/10/2014, 05:49
Avatar de garciasanchezdani  
Fecha de Ingreso: noviembre-2011
Mensajes: 429
Antigüedad: 6 años
Puntos: 51
Respuesta: Sesion conexion BD compartida entre CMS y script externos?

Hola @daicon , ¿por qué no pruebas a utilizar la conexión a la bd, a través de la api del cms que estés usando?
Es decir, por ejemplo, en wordpress, yo suelo utilizar algo así:

Código PHP:
require_once( $path_to_wp '/wp-load.php' ); //cargar api de wordpress
include_once  '/var/www/vhosts/misscripts/v1/Manejador.php'
$maneja = new ManejadorNotificaciones
$maneja->mensaje_privado();
....
.... 
y ya, como he incluido el api, dentro del script puedo acceder a una variable global que gestiona los accesos y demás a bd:

Código HTML:
global $wpdb;
En el caso de wordpress, esa variable anterior wpdb...De esa forma quizás no te encuentres con esos problemas.
__________________
Diseño Web Jaén
  #3 (permalink)  
Antiguo 09/10/2014, 06:35
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 9 años, 7 meses
Puntos: 325
Respuesta: Sesion conexion BD compartida entre CMS y script externos?

Si te fijas, en el manual de php está la solución a tus problemas...

http://php.net/manual/es/function.mysql-connect.php

Observa atentamente el 4º parámetro....

PD: Sino, mejor, utiliza PDO / mysqli, q es altamente recomendado ya q las funciones mysql_ están obsoletas
__________________
>> Eleazan's Source
>> @Eleazan

Etiquetas: bd, cms, compartida, conexion, mysql, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:39.