sauvegarder.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2014 *
  6. * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. if (!defined("_ECRIRE_INC_VERSION")) return;
  12. include_spip('inc/dump');
  13. function inc_sauvegarder_dist($status_file, $redirect='') {
  14. $status_file = _DIR_TMP.basename($status_file).".txt";
  15. if (!lire_fichier($status_file, $status)
  16. OR !$status = unserialize($status)) {
  17. }
  18. else {
  19. $timeout = ini_get('max_execution_time');
  20. // valeur conservatrice si on a pas reussi a lire le max_execution_time
  21. if (!$timeout) $timeout=30; // parions sur une valeur tellement courante ...
  22. $max_time = time()+$timeout/2;
  23. include_spip('inc/minipres');
  24. @ini_set("zlib.output_compression","0"); // pour permettre l'affichage au fur et a mesure
  25. $titre = _T('dump:sauvegarde_en_cours') . " (".count($status['tables']).") ";
  26. $balise_img = chercher_filtre('balise_img');
  27. $titre .= $balise_img(chemin_image('searching.gif'));
  28. echo ( install_debut_html($titre));
  29. // script de rechargement auto sur timeout
  30. echo http_script("window.setTimeout('location.href=\"".$redirect."\";',".($timeout*1000).")");
  31. echo "<div style='text-align: left'>\n";
  32. dump_serveur($status['connect']);
  33. spip_connect('dump');
  34. // au premier coup on ne fait rien sauf afficher l'ecran de sauvegarde
  35. $res = false;
  36. if (_request('step')) {
  37. $options = array(
  38. 'callback_progression' => 'dump_afficher_progres',
  39. 'max_time' => $max_time,
  40. 'no_erase_dest' => lister_tables_noerase(),
  41. 'where' => $status['where']?$status['where']:array(),
  42. );
  43. $res = base_copier_tables($status_file, $status['tables'], '', 'dump', $options);
  44. }
  45. echo ( "</div>\n");
  46. if (!$res AND $redirect)
  47. echo dump_relance($redirect);
  48. echo (install_fin_html());
  49. ob_end_flush();
  50. flush();
  51. return $res;
  52. }
  53. }
  54. ?>