Changeset 35787 in spip-zone


Ignore:
Timestamp:
Mar 4, 2010, 2:37:15 PM (11 years ago)
Author:
gilles.vincent@…
Message:

le plugin dans sa forme finale.. On approche de la surcharge de MySQL
(L'idée est de ne pas faire de nouveau connecteur, mais bien de se substituer à la connexion existante)

L'avantage de cette méthode est qu'il n'y a aucune manipulation à faire dans les fichiers XXX_connect.php.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/extension_mysqli/req/mysqli.php

    r35765 r35787  
    1515// fonction pour changer la connexion aux serveurs MySQL en gardant les paramètres existant
    1616
    17 function req_mysqli_dist() {
     17function req_mysql_dist() {
    1818        charger_php_extension('mysqli');
    19 
    20         // Il faut fermer les connexions existantes
    21         // Et les reconnecter sur MySQLi
    22         // Au moment du chargement de ce plugin, seule la base SPIP est chargée
    23         // TODO : voir ce qu'il va se passer si on se connecte à plusieures bases
    24 
    25         $connexion = &$GLOBALS['connexions'][0];
    26         @mysql_close($connexion['link']);
    27 
    28         // On charge le fichier de configuration pour se reconnecter
    29         $f = file(_DIR_RACINE  . _NOM_PERMANENTS_INACCESSIBLES . 'connect.php');
    30         foreach ($f as $line) {
    31                 if (substr($line, 0, 15) == "spip_connect_db") {
    32                         preg_match("/spip_connect_db\('(\w*)','(\w*)','(\w*)','(\w*)','(\w*)','(\w*)', '(\w*)','(\w*)'\);/", $line, $matches);
    33                         $connexion['link'] = spip_mysqli_connect_db($matches[1], $matches[2], $matches[3], $matches[4], $matches[5], $matches[7]);
    34                 }
    35         }
    36         $connexion[1] = &$GLOBALS['spip_mysql_functions_1'];
     19        if ($port > 0) $host = "$host:$port";
     20        $link = new mysqli($host, $login, $pass, $db);
     21        if (!$link) return false;
     22        $last = '';
     23        if (!$db) {
     24                $db = 'spip';
     25        }
     26
     27        return array(
     28                'db' => $db,
     29                'last' => $last,
     30                'prefixe' => $prefixe ? $prefixe : $db,
     31                'link' => $link
     32        );
     33
    3734}
    3835
     
    9693}
    9794
    98 // http://doc.spip.org/@spip_mysql_set_charset
     95// portage de http://doc.spip.org/@spip_mysql_set_charset
    9996function spip_mysqli_set_charset($charset, $serveur='',$requeter=true,$requeter=true){
    10097        $connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0];
     
    103100}
    104101
    105 // http://doc.spip.org/@spip_mysql_get_charset
     102// portage de http://doc.spip.org/@spip_mysql_get_charset
    106103function spip_mysqli_get_charset($charset=array(), $serveur='',$requeter=true){
    107104        $connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0];
     
    113110// Fonction de requete generale, munie d'une trace a la demande
    114111
    115 // http://doc.spip.org/@spip_mysql_query
     112// portage de http://doc.spip.org/@spip_mysql_query
    116113function spip_mysqli_query($query, $serveur='',$requeter=true) {
    117114
     
    137134}
    138135
    139 // http://doc.spip.org/@spip_mysql_alter
     136// portage de http://doc.spip.org/@spip_mysql_alter
    140137function spip_mysqli_alter($query, $serveur='',$requeter=true){
    141138        return spip_mysqli_query("ALTER ".$query, $serveur, $requeter); # i.e. que PG se debrouille
    142139}
    143140
    144 // http://doc.spip.org/@spip_mysql_optimize
     141// portage de http://doc.spip.org/@spip_mysql_optimize
    145142function spip_mysqli_optimize($table, $serveur='',$requeter=true){
    146143        spip_mysqli_query("OPTIMIZE TABLE ". $table);
     
    148145}
    149146
    150 // http://doc.spip.org/@spip_mysql_explain
     147// portage de http://doc.spip.org/@spip_mysql_explain
    151148function spip_mysqli_explain($query, $serveur='',$requeter=true){
    152149        if (strpos(ltrim($query), 'SELECT') !== 0) return array();
     
    165162
    166163
    167 // http://doc.spip.org/@spip_mysql_select
     164// portage de http://doc.spip.org/@spip_mysql_select
    168165function spip_mysqli_select($select, $from, $where='',
    169166                           $groupby='', $orderby='', $limit='', $having='',
     
    191188// Pas portable malheureusement, on laisse pour le moment.
    192189
    193 // http://doc.spip.org/@spip_mysql_order
     190// portage de http://doc.spip.org/@spip_mysql_order
    194191function spip_mysqli_order($orderby)
    195192{
     
    198195
    199196
    200 // http://doc.spip.org/@calculer_mysqli_where
     197// portage de http://doc.spip.org/@calculer_mysqli_where
    201198function calculer_mysqli_where($v)
    202199{
     
    220217}
    221218
    222 // http://doc.spip.org/@calculer_mysql_expression
     219// portage de http://doc.spip.org/@calculer_mysql_expression
    223220function calculer_mysqli_expression($expression, $v, $join = 'AND'){
    224221        if (empty($v))
     
    237234}
    238235
    239 // http://doc.spip.org/@spip_mysql_select_as
     236// portage de http://doc.spip.org/@spip_mysql_select_as
    240237function spip_mysqli_select_as($args)
    241238{
     
    267264define('_SQL_PREFIXE_TABLE', '/([,\s])spip_/S');
    268265
    269 // http://doc.spip.org/@traite_mysql_query
     266// portage de http://doc.spip.org/@traite_mysql_query
    270267function traite_mysqli_query($query, $db='', $prefixe='') {
    271268
     
    291288}
    292289
    293 // http://doc.spip.org/@spip_mysql_selectdb
     290// portage de http://doc.spip.org/@spip_mysql_selectdb
    294291function spip_mysqli_selectdb($db) {
    295292        return mysqli_select_db($db);
     
    300297// Attention on n'a pas toujours les droits
    301298
    302 // http://doc.spip.org/@spip_mysql_listdbs
     299// portage de http://doc.spip.org/@spip_mysql_listdbs
    303300function spip_mysqli_listdbs($serveur='',$requeter=true) {
    304301        return spip_mysqli_query("show databases",$serveur,$requeter);
     
    312309// Le nom des caches doit etre inferieur a 64 caracteres
    313310
    314 // http://doc.spip.org/@spip_mysql_create
     311// portage de http://doc.spip.org/@spip_mysql_create
    315312function spip_mysqli_create($nom, $champs, $cles, $autoinc=false, $temporary=false, $serveur='',$requeter=true) {
    316313
     
    362359
    363360// Fonction de creation d'une vue SQL nommee $nom
    364 // http://doc.spip.org/@spip_mysql_create_view
     361// portage de http://doc.spip.org/@spip_mysql_create_view
    365362function spip_mysqli_create_view($nom, $query_select, $serveur='',$requeter=true) {
    366363        if (!$query_select) return false;
     
    376373
    377374
    378 // http://doc.spip.org/@spip_mysql_drop_table
     375// portage de http://doc.spip.org/@spip_mysql_drop_table
    379376function spip_mysqli_drop_table($table, $exist='', $serveur='',$requeter=true)
    380377{
     
    384381
    385382// supprime une vue
    386 // http://doc.spip.org/@spip_mysql_drop_view
     383// portage de http://doc.spip.org/@spip_mysql_drop_view
    387384function spip_mysqli_drop_view($view, $exist='', $serveur='',$requeter=true) {
    388385        if ($exist) $exist =" IF EXISTS";
     
    390387}
    391388
    392 // http://doc.spip.org/@spip_mysql_showbase
     389// portage de http://doc.spip.org/@spip_mysql_showbase
    393390function spip_mysqli_showbase($match, $serveur='',$requeter=true)
    394391{
     
    396393}
    397394
    398 // http://doc.spip.org/@spip_mysql_repair
     395// portage de http://doc.spip.org/@spip_mysql_repair
    399396function spip_mysqli_repair($table, $serveur='',$requeter=true)
    400397{
     
    405402// colonnes, indexes, etc.
    406403// au meme format que la definition des tables de SPIP
    407 // http://doc.spip.org/@spip_mysql_showtable
     404// portage de http://doc.spip.org/@spip_mysql_showtable
    408405function spip_mysqli_showtable($nom_table, $serveur='',$requeter=true)
    409406{
     
    476473//
    477474
    478 // http://doc.spip.org/@spip_mysql_fetch
     475// portage de http://doc.spip.org/@spip_mysql_fetch
    479476function spip_mysqli_fetch($r, $t='', $serveur='',$requeter=true) {
    480477        if (!$t) $t = MYSQLI_ASSOC;
     
    487484
    488485
    489 // http://doc.spip.org/@spip_mysql_countsel
     486// portage de http://doc.spip.org/@spip_mysql_countsel
    490487function spip_mysqli_countsel($from = array(), $where = array(),
    491488                             $groupby = '', $having = array(), $serveur='',$requeter=true)
     
    502499}
    503500
    504 // http://doc.spip.org/@spip_mysql_error
     501// portage de http://doc.spip.org/@spip_mysql_error
    505502function spip_mysqli_error($serveur='') {
    506503        $connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0];
     
    510507
    511508// A transposer dans les portages
    512 // http://doc.spip.org/@spip_mysql_errno
     509// portage de http://doc.spip.org/@spip_mysql_errno
    513510function spip_mysqli_errno($serveur='') {
    514511        $connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0];
     
    523520
    524521// Interface de abstract_sql
    525 // http://doc.spip.org/@spip_mysql_count
     522// portage de http://doc.spip.org/@spip_mysql_count
    526523function spip_mysqli_count($r, $serveur='',$requeter=true) {
    527524        if ($r) return mysqli_num_rows($r);
     
    529526
    530527
    531 // http://doc.spip.org/@spip_mysql_free
     528// portage de http://doc.spip.org/@spip_mysql_free
    532529function spip_mysqli_free($r, $serveur='',$requeter=true) {
    533530        return mysqli_free_result($r);
    534531}
    535532
    536 // http://doc.spip.org/@spip_mysql_insert
     533// portage de http://doc.spip.org/@spip_mysql_insert
    537534function spip_mysqli_insert($table, $champs, $valeurs, $desc='', $serveur='',$requeter=true) {
    538535
     
    560557}
    561558
    562 // http://doc.spip.org/@spip_mysql_insertq
     559// portage de http://doc.spip.org/@spip_mysql_insertq
    563560function spip_mysqli_insertq($table, $couples=array(), $desc=array(), $serveur='',$requeter=true) {
    564561
     
    575572
    576573
    577 // http://doc.spip.org/@spip_mysql_insertq_multi
     574// portage de http://doc.spip.org/@spip_mysql_insertq_multi
    578575function spip_mysqli_insertq_multi($table, $tab_couples=array(), $desc=array(), $serveur='',$requeter=true) {
    579576
     
    602599}
    603600
    604 // http://doc.spip.org/@spip_mysql_update
     601// portage de http://doc.spip.org/@spip_mysql_update
    605602function spip_mysqli_update($table, $champs, $where='', $desc='', $serveur='',$requeter=true) {
    606603        $set = array();
     
    617614// idem, mais les valeurs sont des constantes a mettre entre apostrophes
    618615// sauf les expressions de date lorsqu'il s'agit de fonctions SQL (NOW etc)
    619 // http://doc.spip.org/@spip_mysql_updateq
     616// portage de http://doc.spip.org/@spip_mysql_updateq
    620617function spip_mysqli_updateq($table, $champs, $where='', $desc=array(), $serveur='',$requeter=true) {
    621618
     
    634631}
    635632
    636 // http://doc.spip.org/@spip_mysql_delete
     633// portage de http://doc.spip.org/@spip_mysql_delete
    637634function spip_mysqli_delete($table, $where='', $serveur='',$requeter=true) {
    638635        $res = spip_mysqli_query(
     
    648645}
    649646
    650 // http://doc.spip.org/@spip_mysql_replace
     647// portage de http://doc.spip.org/@spip_mysql_replace
    651648function spip_mysqli_replace($table, $couples, $desc=array(), $serveur='',$requeter=true) {
    652649        return spip_mysqli_query("REPLACE $table (" . join(',',array_keys($couples)) . ') VALUES (' .join(',',array_map('_q', $couples)) . ')', $serveur, $requeter);
     
    654651
    655652
    656 // http://doc.spip.org/@spip_mysql_replace_multi
     653// portage de http://doc.spip.org/@spip_mysql_replace_multi
    657654function spip_mysqli_replace_multi($table, $tab_couples, $desc=array(), $serveur='',$requeter=true) {
    658655        $cles = "(" . join(',',array_keys($tab_couples[0])). ')';
     
    666663
    667664
    668 // http://doc.spip.org/@spip_mysql_multi
     665// portage de http://doc.spip.org/@spip_mysql_multi
    669666function spip_mysqli_multi ($objet, $lang) {
    670667        $lengthlang = strlen("[$lang]");
     
    696693}
    697694
    698 // http://doc.spip.org/@spip_mysql_hex
     695// portage de http://doc.spip.org/@spip_mysql_hex
    699696function spip_mysqli_hex($v)
    700697{
     
    725722// IN (...) est limite a 255 elements, d'ou cette fonction assistante
    726723//
    727 // http://doc.spip.org/@spip_mysql_in
     724// portage de http://doc.spip.org/@spip_mysql_in
    728725function spip_mysqli_in($val, $valeurs, $not='', $serveur='',$requeter=true) {
    729726        $n = $i = 0;
     
    745742
    746743// pour compatibilite. Ne plus utiliser.
    747 // http://doc.spip.org/@calcul_mysql_in
     744// portage de http://doc.spip.org/@calcul_mysql_in
    748745function calcul_mysqli_in($val, $valeurs, $not='') {
    749746        if (is_array($valeurs))
     
    754751}
    755752
    756 // http://doc.spip.org/@spip_mysql_cite
     753// portage de http://doc.spip.org/@spip_mysql_cite
    757754function spip_mysqli_cite($v, $type) {
    758755        if (sql_test_date($type) AND preg_match('/^\w+\(/', $v)
Note: See TracChangeset for help on using the changeset viewer.