Demande script : Vider le Cache Drupal et OVH (mutalisé) tache planifiée.

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

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.

Forum : 

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 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