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: 13 let
|
0