PM-1903 "0017014: ProcessMaker loses connection..." SOLVED

Issue:
    0017014: ProcessMaker loses connection with database -> lack of mysql_close()
Cause:
    - Error al tratar de conectarse a la BD
    - Segun el feedback proporcianado, el problema central
      se basa en que no se esta haciendo uso del mysql_close()
Solution:
    - Se a logrado implementar el close de los connects a BD abiertos
    - Este cambio repercute en toda la funcionalidad de ProcessMaker. Por lo
      que se debera hacer un test con todos los flags de depuracion
      habilitados, tambien con todos los plugins habilitados/deshabilitados
    - Tambien se debe considerar otros "test cases"
This commit is contained in:
Victor Saisa Lopez
2015-03-30 15:02:48 -04:00
parent 1d6a197592
commit e80dcd506b
2 changed files with 28 additions and 13 deletions

View File

@@ -596,16 +596,20 @@ class Propel {
* *
* @return void * @return void
*/ */
public static function close() public static function close()
{ {
$last = ''; $lastQuery = "";
foreach(self::$connectionMap as $conn) {
if ($last != $conn->lastQuery) { foreach (self::$connectionMap as $cnn) {
$conn->close(); if (!($cnn instanceof DBArrayConnection)) {
} if (gettype($cnn->getResource()) == "resource" && $cnn->isConnected() && $cnn->lastQuery != $lastQuery) {
$last = $conn->lastQuery; $cnn->close();
} }
}
$lastQuery = $cnn->lastQuery;
}
}
}
/** /**
* @param $name string The connection name * @param $name string The connection name

View File

@@ -1,4 +1,15 @@
<?php <?php
register_shutdown_function(
create_function(
"",
"
if (class_exists(\"Propel\")) {
Propel::close();
}
"
)
);
/* /*
* ProcessMaker Web Application Bootstrap * ProcessMaker Web Application Bootstrap
*/ */