[Phpmyadmin-devel] failover for loading mysql(i) extension

Marc Delisle Marc.Delisle at cegepsherbrooke.qc.ca
Wed Nov 16 09:44:02 CET 2005


Hi Sebastian,
you can commit now. Then, let's discuss the roadmap for -rc1 :)

Marc

Sebastian Mendel a écrit :
> Hi,
> 
> i have written a fail over for loading the desired extension,
> 
> should i check in this now, or should i wait for 2.7.1 ?
> 
> 
> 
> if selected extension it trys the other extension, and prints an error 
> message on main.php, but works, elsewise it redirects to error.php
> 
> (also minor changes in main.php and dbi/*)
> 
> in database_interface.lib.php:
> 
> /**
>  * Loads the mysql extensions if it is not loaded yet
>  *
>  * @param   string  $extension  mysql extension to load
>  */
> function PMA_DBI_checkAndLoadMysqlExtension( $extension = 'mysql' ) {
>     if ( ! function_exists( $extension . '_connect' ) ) {
>         PMA_dl( $extension );
>         // check whether mysql is available
>         if ( ! function_exists( $extension . '_connect' ) ) {
>             return false;
>         }
>     }
> 
>     return true;
> }
> 
> 
> /**
>  * check for requested extension
>  */
> if ( ! PMA_DBI_checkAndLoadMysqlExtension( 
> $GLOBALS['cfg']['Server']['extension'] ) ) {
> 
>     // if it fails try alternative extension ...
>     // and display an error ...
> 
>     // TODO 2.7.1: add different messages for alternativ extension
>     // and complete fail (no alternativ extension too)
>     $GLOBALS['errors'][] = sprintf($GLOBALS['strCantLoad'], 
> $GLOBALS['cfg']['Server']['extension']) . '<br />' . "\n"
>         .'<a href="./Documentation.html#faqmysql" 
> target="documentation">' . $GLOBALS['strDocu'] . '</a>' . "\n";
> 
>     if ( $GLOBALS['cfg']['Server']['extension'] === 'mysql' ) {
>         $alternativ_extension = 'mysqli';
>     } else {
>         $alternativ_extension = 'mysql';
>     }
> 
>     if ( ! PMA_DBI_checkAndLoadMysqlExtension( $alternativ_extension ) ) {
>         // if alternativ fails too ...
>         header( 'Location: error.php'
>                 . '?lang='  . urlencode( $available_languages[$lang][2] )
>                 . '&char='  . urlencode( $charset )
>                 . '&dir='   . urlencode( $text_dir )
>                 . '&type='  . urlencode( $strError )
>                 . '&error=' . urlencode(
>                     sprintf( $GLOBALS['strCantLoad'],
>                         $GLOBALS['cfg']['Server']['extension'] )
>                     .' - [a at ./Documentation.html#faqmysql at documentation]'
>                     .$GLOBALS['strDocu'] . '[/a]' )
>                 . '&' . SID
>                  );
>         exit();
>     }
> 
>     $GLOBALS['cfg']['Server']['extension'] = $alternativ_extension;
> }
> 
> 
> 





More information about the Developers mailing list