Cette page étudie les différents paramètres du fichier wp-config.php. La version de référence est WPmu 1.2.1
Ce sont les variables habituelles fournies par votre FAI pour vous connecter à la base de données MySQL. DB_NAME est le nom de la base de données. DB_USER est le login pour la base de données. DB_PASSWORD est le mot de passe associé au login. DB_HOST est généralement laissé à localhost pour des raisons de sécurité.
Le langage par défaut est l'anglais. WordPress utilise la librairie gettext pour fournir les traductions. Ce système a le grand désavantage de devoir:
Je ne comprends pas que ce système puisse fédérer autant de monde! C'est lourd.
Cette variable donne le sous-dossier dans lequel est installé WordPressMu (ex: http://mon.domaine.com/blogs/ donnera $base='/blogs/';). Pourtant, il est officiellement conseillé d'installer WPmu dans le répertoie racine. En tout cas, il y a un test d'installation sur la valeur initiale 'BASE'; ce qui interdit un répertoire de ce nom!
Par défaut, ce paramètre vaut 'false', l'autre valeur peut être 'true'. Sans modification, WPmu utilise une seule database et crée un ensemble de nouvelles tables pour chaque nouveau blog. Pour un nombre de blogs de l'ordre de grandeur 100, il n'y a pas de problème: on a a peu près 10 tables par blog; ce qui donne 1.000 tables dans une database. MySQL le supporte bien.
Par contre, pour passer à un nombre autour de 1.000 blogs, cela devient problématique. Les databases MySQL sont en MyISAM par défaut, ce qui veut dire que une database est un répertoire et une table donne 3 fichiers (.frm .MYD .MYI). On se retrouve alors, pour 1.000 blogs, avec un répertoire avec en gros 30.000 fichiers ! Il faut faire attention à la limite système Linux pour le nombre de fichiers dans un répertoire. Apparemment, à partir de 10.000 fichiers, les performances peuvent prendre un coup de lenteur!
Un extrait de http://en.wikipedia.org/wiki/Ext2 :
The reason for certain limits of the ext2-file system can be the file format of the data medium on one hand and the operating system's kernel on the other hand. Mostly these factors will be determined once when the file system is built. They basically depend on the block size and the ratio of the number of blocks and inodes. Block sizes of 8 KB are only possible on alpha-architectures by default. There are also many userspace-programs with a lack of being able to handle files with a size above 2 GB. The limit of sublevel-directories is about 32768. If the number of files in a directory exceeds 10000 to 15000 files, the user will normally be warned that operations can last for a long time. The actual limit of the number of files in a directory is very theoretical, because before reaching the limit of 1.3 × 1020 files it will become hard to find new well-defined file names.
Le passage en 10.000 blogs est clairement hors de portée de la version 'officielle' de WPmu et nécessite des modifications pour arriver à gérer autant de blogs.
./wp-includes/wp-db.php:49: if( defined( "WP_USE_MULTIPLE_DB" ) && CONSTANT( "WP_USE_MULTIPLE_DB" ) == true ) ./wp-includes/wp-db.php:223: if( defined( "WP_USE_MULTIPLE_DB" ) && CONSTANT( "WP_USE_MULTIPLE_DB" ) == true ) { ./wp-config-sample.php:24:define( "WP_USE_MULTIPLE_DB", false ); ./wp-config.php:24:define( "WP_USE_MULTIPLE_DB", false );
Pour aller plus en détails dans le fichier wp-db.php wp-db.php
Ces paramètre sont utilisés en interne de la Couche d'Accès aux Données (CAD). Il sont utilisés seulement dans les instructions de upgrade-schema.php avec une variable du type DB_CHARSET.DB_COLLATE
./wp-includes/wp-db.php:60: if ( defined('DB_COLLATE') ) ./wp-includes/wp-db.php:61: $this->collate = DB_COLLATE; ./wp-config-sample.php:8:define('DB_COLLATE', ''); ./wp-config.php:8:define('DB_COLLATE', '');
./wp-includes/wp-db.php:57: if ( defined('DB_CHARSET') ) ./wp-includes/wp-db.php:58: $this->charset = DB_CHARSET; ./wp-config-sample.php:7:define('DB_CHARSET', 'utf8'); ./wp-config.php:7:define('DB_CHARSET', 'utf8');
./wp-includes/wp-db.php:39: var $collate; ./wp-includes/wp-db.php:61: $this->collate = DB_COLLATE; ./wp-admin/upgrade-schema.php:5:$charset_collate = ''; ./wp-admin/upgrade-schema.php:9: $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; ./wp-admin/upgrade-schema.php:10: if ( ! empty($wpdb->collate) ) ./wp-admin/upgrade-schema.php:11: $charset_collate .= " COLLATE $wpdb->collate"; ./wp-admin/upgrade-schema.php:26:) $charset_collate; ./wp-admin/upgrade-schema.php:46:) $charset_collate; ./wp-admin/upgrade-schema.php:53:) $charset_collate; ./wp-admin/upgrade-schema.php:72:) $charset_collate; ./wp-admin/upgrade-schema.php:87:) $charset_collate; ./wp-admin/upgrade-schema.php:94:) $charset_collate; ./wp-admin/upgrade-schema.php:103:) $charset_collate; ./wp-admin/upgrade-schema.php:132:) $charset_collate; ./wp-admin/upgrade-schema.php:148:) $charset_collate; ./wp-admin/upgrade-schema.php:157:) $charset_collate;
VHOST a soit la valeur 'yes' ou 'no' Quand VHOST est défini à 'yes', WPmu est installé en mode sous-domaine, c'est à dire http://monblog.portail.com Quand VHOST est défini à 'no', WPmu est installé en mode sous-dossiers, c'est à dire http://portail.com/monblog/
./wp-includes/wpmu-functions.php:86: if( defined( "VHOST" ) && constant( "VHOST" ) == 'yes' ) { ./wp-includes/wpmu-functions.php:96: if( defined( "VHOST" ) && constant( "VHOST" ) == 'yes' ) { ./wp-includes/wpmu-functions.php:981: if( constant( "VHOST" ) == 'yes' ) { ./wp-includes/wpmu-functions.php:1050: if( constant( "VHOST" ) == 'no' ) { ./wp-admin/wpmu-blogs.php:375: if( constant( "VHOST" ) == 'yes' ) { ./wp-admin/wpmu-blogs.php:529:if( constant( "VHOST" ) == 'yes' ) { ./wp-admin/wpmu-edit.php:119: if( constant( "VHOST" ) == 'yes' ) { ./wp-signup.php:38: if( constant( "VHOST" ) == 'no' ) ./wp-signup.php:46: if( constant( "VHOST" ) == 'no' ) { ./wp-signup.php:53: if( constant( "VHOST" ) == 'no' ) { ./wp-signup.php:380: if( constant( "VHOST" ) == 'no' ) ./wp-config-sample.php:9:define('VHOST', 'VHOSTSETTING'); ./wp-config.php:9:define('VHOST', 'no'); ./index-install.php:328: case "define('VHOST',": ./index-install.php:329: fwrite($handle, str_replace("VHOSTSETTING", $vhost, $line)); ./index-install.php:345: define( 'VHOST', $vhost ); ./wpmu-settings.php:29: if( constant( 'VHOST' ) == 'yes' ) { ./wpmu-settings.php:82:if( constant( 'VHOST' ) == 'yes' ) {
<?php // ** MySQL settings ** // define('DB_NAME', 'wordpress'); // The name of the database define('DB_USER', 'username'); // Your MySQL username define('DB_PASSWORD', 'password'); // ...and password define('DB_HOST', 'localhost'); // 99% chance you won't need to change this value define('DB_CHARSET', 'utf8'); define('DB_COLLATE', ''); define('VHOST', 'VHOSTSETTING'); $base = 'BASE'; // double check $base if( $base == 'BASE' ) die( 'Problem in wp-config.php - $base is set to BASE when it should be the path like "/" or "/blogs/"! Please fix it!' ); // You can have multiple installations in one database if you give each a unique prefix $table_prefix = 'wp_'; // Only numbers, letters, and underscores please! // Change this to localize WordPress. A corresponding MO file for the // chosen language must be installed to wp-includes/languages. // For example, install de.mo to wp-includes/languages and set WPLANG to 'de' // to enable German language support. define ('WPLANG', ''); define( "WP_USE_MULTIPLE_DB", false ); /* That's all, stop editing! Happy blogging. */ define('ABSPATH', dirname(__FILE__).'/'); require_once(ABSPATH.'wp-settings.php'); ?>