Salut tout le monde,
j'aimerais faire une tache cron qui exporte la bdd en .gz et qui me l'envoie par email. J'ai vue ça sous Wordpress et j'aimerais le faire sous Codeigniter.
Quelqu’un a une idée ?
Merci d'avance.
Je pense que ceci vas t'aider.
<?php
//Information sur la base de donnée
$host = "host_bdd";
$user = "user_bdd";
$password = "mdp_bdd";
$db_name = "db";
//Utilisation de la commande mysqldump pour récupérer la base de donnée, puis compression dans un gz
system("mysqldump --host=".$host." --user=".$user." --password=".$password." --no-create-db --default-character-set=utf8 --lock-tables=FALSE --tables ".$db_name." > ".$db_name.".sql");
system("gzip -v ".$db_name.".sql");
//Ici le mail
// Adresse du contact
$to = 'ton_adresse@truc.com';
// Sujet du message
$subject = 'Un sujet qui dit n\'importe quoi';
//Mail et nom de l'expéditeur
$from_name = 'Site Web';
$from_mail = 'adresse_exp@truc.com';
//Clé aléatoire de limite
$boundary = md5(uniqid(microtime(), TRUE));
//En-tête
$headers = 'From: '.$from_name.' <'.$from_mail.'>'."\r\n";
$headers .= 'Mime-Version: 1.0'."\r\n";
$headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
$headers .= "\r\n";
// Message
$msg = 'This is a multipart/mixed message.'."\r\n\r\n";
// Texte
$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
$msg .= 'Content-transfer-encoding:8bit'."\r\n";
$msg .= 'Voici la sauvegarde de la base de donnée.'."\r\n";
// Pièce jointe
$file_name = $db_name.'.sql.gz';
if (file_exists($file_name))
{
$file_type = filetype($file_name);
$file_size = filesize($file_name);
$handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open');
$content = fread($handle, $file_size);
$content = chunk_split(base64_encode($content));
$f = fclose($handle);
$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
$msg .= 'Content-transfer-encoding:base64'."\r\n";
$msg .= $content."\r\n";
}
$msg .= '--'.$boundary."\r\n";
// Function mail()
mail($to, $subject, $msg, $headers);
?>
T'auras juste à lancer ce script avec CRON et t'auras ta sauvegarde de BDD normalement.
Merci pour ton aide j’apprécie l'effort, mais tout ce que tu viens de me donner il existe sous Codeigniter avec des helpers ^^. Moi ce que je cherche c'est d'automatiser ça sans faire des commandes comme j'ai l’habitude de voir. Vue que j'ai travailler sous Drupal et il gère les cron sans pour autant taper des commande. Alors comment on fait pour faire des cron sans taper des ligne de commande dans le shell du serveur ?!?!
Et encore une fois merci.
Ba tu voulais la faire comment ta tache CRON? Là en fait tu as juste à programmer l'heure dans les tâches CRON, et dire qu'il doit aller sur cette page, ce qui activera le script et donc tu vas récupérer ta sauvegarde.
Ba sur la documentation de Drupal c'est écris: http://drupal.org/cron
En gros tu dois renseigner quel page Drupal doit aller voir. C'est pas ton serveur qui le fait mais Drupal.
Ce que je voulais dire c'est que j'ai travaillé sous Drupal et il gère les <u>CRON</u> sans pour autant taper des ligne de commandes lors de son installation j'aimerais bien savoir comment faire des <u>CRON</u> sous Codeigniter sans taper des commandes ? Pour par exemple une fois par semaine exporter la BDD vers une adresse mail. (l'export et l'envoie existe sur CI il reste le programmation de la tâche ^^).
Une idée ?
http://www.nyndesigns.com/article-11/web-development/codeigniter-2.0-cron-boot-strap-loader-cli
Ici il semble y avoir de quoi faire, mais franchement je pense pas que tu puisses sans passer par le shell au moins une fois. Car là par exemple il est dis que tu dois lancer le script par ligne de commande.
Merci mais , (je sais que je vais être un peu lourd)
j'ai déjà vu ce script et ce que je veut éviter de faire c'est le :
<u>5. Run the cron script from command line with the command: $> php cron.php</u>
Par ce que (je sais, je le répété beaucoup ^^) je sous Drupal le cron s’exécute ans taper cette commande lors de son installation, et moi je veut faire la même chose mais sous Codeigniter.
Est ce possible ?
Non car lorsque tu avais Drupal, c'est pas ton serveur qui avait le CRON mais le serveur Drupal, qui "venait" sur ton serveur pour activer ta page.
Si tu n'as pas CRON sur ton serveur, ou l'impossibilité de l'activer, essaye ça: http://www.cronjobonline.com/
En gros ça ressemblera à Drupal.