Submitted by LesEntreprenautes on
Bonjour,
je teste Drupal sur un serveur mutualisé d'OVH et c'est la cata concernant la taille des bases. Dans mon cas la base explose regulierement la capacité autorisée. La base depasse les 50mo tous les x jours) alors que le site ne fait que 10mo.
Ovh bloque une fois le quota dépassé ( et si le webmaster se rue sur l'interface pour faire un vider le cache, c'est le plantage assuré du site. J''ai fait l'experience a deux reprises (et je ne suis pas le seul) car il faut suivre une procédure pour reaactiver les droits d'ecritures sur la base, il est donc fortement deconseillé de toucher a Drupal avant cette manip.
Personnellement, j'ai contourné en faisant un script qui vide toutes les tables, et notament la table cache_form qui pose probleme ( je pense qu'elle ne se vide pas meme quand on fait un clear_cache depuis l'admin)(?)
J'ai ecrit sur une page séparée un code php qui vide les tables, je le fait executer via les taches planifies d'OVH ou je le lance via le navigateur. Ce code est dégueu, donc je ne le propose pas ( je remets les logins, pass etc..).
Je suppose que sur DrupalFr, il y a des développeurs expérimentés qui pourraient ecrire un tel script qui puisse se lancer via les taches planifiées ou depuis une url distincte (sans etre admin) et le proposer à la communauté des pauvres webmasters qui ne peuvent se payer des serveurs dédiés.
Cette requete ne me concerne pas directement, puisque je dispose d'un serveur mais cette install sur un mutualisé m'a fait découvrir ce problème qui penalisera beaucoup de futur drupalien.
Merci.
Il vous suffit de rajouter à
Permalien Soumis par takeova le 3 Mars, 2010 - 20:52
Il vous suffit de rajouter à la racine de Drupal le code suivant dans un fichier .php par exemple vider_database.php puis d'appeller le fichier avec les taches planifies.
<?php
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE); // Vide les tables cache_block et cache_page
cache_clear_all(); //Vide la table cache_form
cache_clear_all('*', 'cache_form', TRUE);
?>
Par contre si vous souhaiter pouvoir y acceder par un lien dans un menu il vous faudra créer un petit module par exemple :
<?php
function monModule_menu() {
$items = array();
$items['admin/clear/database'] = array(
'title' => 'Vider la base de donnée',
'page callback' => 'monModule_database',
'access callback' => true,
'type' => MENU_CALLBACK,
);
return
$items;}
function
monModule_database() {// Vide les tables cache_block et cache_page
cache_clear_all();
//Vide la table cache_form
cache_clear_all('*', 'cache_form', TRUE);
drupal_set_message(t('Les caches ont été vidée.'));
return '';
}
?>
N'oublier pas de changer 'access callback' par ce que vous souhaiter si tout le monde ne doit pas avoir accès.
Takeova, MERCI pour votre
Permalien Soumis par LesEntreprenautes le 4 Mars, 2010 - 11:43
Takeova,
MERCI pour votre réponse, le script marche bien quand il est lancé depuis site.ltd/vide-cache.php
En ce qui concerne les taches planifiées, je vais attendre la prochaine exécution! néammoins une question me vient. J'ai juste rajouté cette ligne préconisée en entete(#!/usr/local/bin/php)
Si je mets ce fichier à la racine et que je suis en multisite comment la tache va pouvoir associer le site à purger? Le fichier à executer ne se fait pas par une url....
Cordialement
Il suffit seulement d'appeler
Permalien Soumis par takeova le 4 Mars, 2010 - 13:29
Il suffit seulement d'appeler depuis le cron d'ovh l'url http://www.site.ltd/vide-cache.php
Sauf erreur de ma part
Permalien Soumis par LesEntreprenautes le 4 Mars, 2010 - 13:33
Sauf erreur de ma part l'appel du fichier se fait comme cela :
/root/drupal/vide-cache.php
je vais cependant verifier. Merci encore.
Cordialement