From ad89a4ce1ed6f0f17ebdd39baf6d4f9bdaba855c Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Tue, 26 Apr 2005 07:59:20 +0000 Subject: [PATCH] =?UTF-8?q?gestion=20des=20erreurs=20mysql=20bizarres=20(m?= =?UTF-8?q?erci=20=C3=A0=20ouvaton=20pour=20les=20tests=20intensifs)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ici en cas de timeout, au lieu de faire que chaque hit attende indéfiniment l'ereur SQL, on se base sur ecrire/data/mysql_out pour savoir tout de suite que ça ne marche pas. Ca soulage *beaucou* le serveur web, et ça donne en prime les pages du cache au visiteurs --- ecrire/inc_db_mysql.php3 | 18 +++++++++++++++++- ecrire/inc_version.php3 | 2 ++ ecrire/install.php3 | 8 ++++---- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/ecrire/inc_db_mysql.php3 b/ecrire/inc_db_mysql.php3 index 0726d86d75..83d7028453 100644 --- a/ecrire/inc_db_mysql.php3 +++ b/ecrire/inc_db_mysql.php3 @@ -140,10 +140,26 @@ function traite_query($query) { function spip_connect_db($host, $port, $login, $pass, $db) { global $spip_mysql_link, $spip_mysql_db; // pour connexions multiples + // gerer le fichier ecrire/data/mysql_out + ## TODO : ajouter md5(parametres de connexion) + if (@file_exists(_FILE_MYSQL_OUT) + AND (time() - @filemtime(_FILE_MYSQL_OUT) < 300) + AND !defined('_ECRIRE_INSTALL')) + return $GLOBALS['db_ok'] = false; + if ($port > 0) $host = "$host:$port"; $spip_mysql_link = @mysql_connect($host, $login, $pass); $spip_mysql_db = $db; - return @mysql_select_db($db); + $ok = @mysql_select_db($db); + + $GLOBALS['db_ok'] = $ok + AND !!@spip_num_rows(@spip_query_db('SELECT COUNT(*) FROM spip_meta')); + + // En cas d'erreur marquer le fichier mysql_out + if (!$GLOBALS['db_ok'] + AND !defined('_ECRIRE_INSTALL')) @touch(_FILE_MYSQL_OUT); + + return $GLOBALS['db_ok']; } diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index b86db08649..29ab7ce37c 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -577,6 +577,8 @@ function spip_query($query) { return; // Vieux format de fichier connexion + // Note: la version 0.1 est compatible avec la 0.2 (mais elle gere + // moins bien les erreurs timeout sur SQL), on ne force donc pas l'upgrade if ($GLOBALS['spip_connect_version'] < 0.1) { if (!_DIR_RESTREINT) {$GLOBALS['db_ok'] = false; return;} @Header("Location: upgrade.php3?reinstall=oui"); diff --git a/ecrire/install.php3 b/ecrire/install.php3 index b1232108bd..c0b690449d 100644 --- a/ecrire/install.php3 +++ b/ecrire/install.php3 @@ -258,7 +258,7 @@ else if ($etape == 4) { // Message pour spip_query : tout va bien ! $GLOBALS['db_ok'] = true; - $GLOBALS['spip_connect_version'] = 0.1; # cf. inc_version + $GLOBALS['spip_connect_version'] = 0.2; # cf. inc_version // Test si SPIP deja installe spip_query("SELECT COUNT(*) FROM spip_meta"); @@ -297,11 +297,11 @@ else if ($etape == 4) { $conn = "<"."?php\n"; $conn .= "if (defined(\"_ECRIRE_INC_CONNECT\")) return;\n"; $conn .= "define(\"_ECRIRE_INC_CONNECT\", \"1\");\n"; - $conn .= "\$GLOBALS['spip_connect_version'] = 0.1;\n"; + $conn .= "\$GLOBALS['spip_connect_version'] = 0.2;\n"; $conn .= "include_ecrire('inc_db_mysql.php3');\n"; $conn .= $ligne_rappel; - $conn .= "@spip_connect_db('$adresse_db','','$login_db','$pass_db','$sel_db');\n"; - $conn .= "\$GLOBALS['db_ok'] = !!@spip_num_rows(@spip_query_db('SELECT COUNT(*) FROM spip_meta'));\n"; + $conn .= "spip_connect_db('$adresse_db','','$login_db','$pass_db','$sel_db');\n"; +# $conn .= "\$GLOBALS['db_ok'] = !!@spip_num_rows(@spip_query_db('SELECT COUNT(*) FROM spip_meta'));\n"; $conn .= "?".">"; $myFile = fopen(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP, "wb"); fputs($myFile, $conn); -- GitLab