| Autor | Zpráva | ||
|---|---|---|---|
| etexweb Profil |
#1 · Zasláno: 9. 8. 2011, 19:34:47 · Upravil/a: etexweb
Na akú hodnotu zmeniť memory_limit v php.ini aby nevypisovalo chybu:
Fatal error: Allowed memory size of 104857600 bytes exhausted (tried to allocate 103861381 bytes) in /home/clients/aktuality.sk/aktuality.sk/backups/index.php on line 28 |
||
| DJ Miky Profil |
#2 · Zasláno: 9. 8. 2011, 19:40:35
Na vyšší.
Nebo optimalizovat ten skript, aby nepotřeboval tolik paměti. |
||
| etexweb Profil |
#3 · Zasláno: 9. 8. 2011, 19:44:42 · Upravil/a: etexweb
Ako by si ho teda optimalizoval pri databáze z veľkosťou 500 MB ?
<?php
// Zálohovanie SQL databázy v ZIP formáte na server, © 2011 EtexWEB.sk
// Tento script je voľne šíriteľný.
// Nevymazávajte tento text!
// Verzia: 3.2v Autor: Richard Dobroň
Class BackUP {
var $DB_host = "localhost"; // Hosting
var $DB_user = "databaza"; // Uživateľ
var $DB_pass = "heslo"; // Heslo
var $DB_name = "meno"; // Názov databázy
var $DB_tabs = Array(); // Tabulky
var $DB_flds = Array(); // Polia
var $DB_row1; // Riadok 1
var $DB_cmmd; // Príkaz
var $Content; // Obsah
Function BackUP() {
$creationstart=strtok(microtime()," ")+strtok(" ");
mysql_connect($this->DB_host, $this->DB_user, $this->DB_pass);
mysql_select_db($this->DB_name);
$this->DB_cmmd = mysql_query("SHOW TABLES");
While($row = mysql_fetch_row($this->DB_cmmd))
$this->DB_tabs[] = $row[0];
Foreach($this->DB_tabs as $tabulka) {
$this->DB_cmmd = mysql_query("SELECT * FROM ".$tabulka);
$this->Content.= "DROP TABLE IF EXISTS $table;";
$this->DB_row1 = mysql_fetch_row(mysql_query("SHOW CREATE TABLE ".$tabulka));
$this->Content.= "\n\n".$this->DB_row1[1].";\n\n";
While($row = mysql_fetch_row($this->DB_cmmd)) {
$this->Content.= "INSERT INTO $table VALUES(";
Foreach($row as $field)
$this->flds[]="'".mysql_real_escape_string($field)."'";
$this->Content.= implode(",",$this->flds).");\n";
}
$this->Content.="\n\n\n";
}
$creationend=strtok(microtime()," ")+strtok(" ");
$creationtime=number_format($creationend-$creationstart,4);
$zip = new ZipArchive;
$name = date("Y-j-F-H-i");
$res = $zip->open($name.".zip", ZipArchive::CREATE);
If ($res === TRUE) {
$zip->addFromString("BackUP.sql", $this->Content);
$zip->close();
echo "Záloha bola úspešne vytvorená za {$creationtime} sekúnd!";
} Else {
echo 'Vytvorenie zálohy zlyhalo!';
}
}
}
$BackUP = new BackUP(); // Zavolanie funkcie() |
||
| Tori Profil |
#4 · Zasláno: 9. 8. 2011, 19:47:45
etexweb:
Například místo ukládání do proměnné by se mohlo postupně ukládat do dočasného souboru a pak pracovat s ním. |
||
| etexweb Profil |
#5 · Zasláno: 9. 8. 2011, 20:26:29
Tak som to skúšal ale z databázy veľkej 1MB vytvorilo súbor veľký 10 GB
|
||
| Tori Profil |
#6 · Zasláno: 9. 8. 2011, 21:27:43
Tohle vám chybělo:
While($row = mysql_fetch_row($this->DB_cmmd)) {
$this->flds = array();
$this->Content.= "INSERT INTO $table VALUES(";
Foreach($row as $field)
$this->flds[]="'".mysql_real_escape_string($field)."'";
$this->Content.= implode(",",$this->flds).");\n";
} |
||
|
Časová prodleva: 15 let
|
|||
0