Antworten auf deine Fragen:
Neues Thema erstellen

Mysql Query Result lokal speichern

Robbyn-

PHP / Flex Programmierer

Hy, ist es möglich ein mysql_query Result in eine Variable zu speichern und dann den Inhalt dieser Variable in z.b. einer .txt oder .csv Datei lokal abzuspeichern.? So das ich bei dem gleichen SQL Befehl nicht erst ein mysql_query lossenden muss, sondern weiß, aha, ich habe eine .txt Datei, holl ich es mir doch daraus.

Grüßen
Robbyn
 

Misco

Nicht mehr ganz neu hier

AW: Mysql Query Result lokal speichern

Hier ein Beispiel zum beschreiben / erstellen von Dateien, Details findest du wenn du die Funktionen googlest.

$output = "$variable";
$datei = fopen('text.txt',"a+"); rewind($datei); fwrite($datei, $output); fclose($datei);

Grüße
Dennis
 

Chriss1987

me.drinkCoffee();

AW: Mysql Query Result lokal speichern

Hi,

darf ich fragen, warum du das so machen willst? Filesystem-Zugriffe sind, vorallem bei mehreren gleichzeitigen Userzugriffen deutlich langsammer als DB-Abfragen. Das nur als kleine Information! ;)

Schöne Grüße aus dem eisigen Sauerland!
Chriss
 

Robbyn-

PHP / Flex Programmierer

AW: Mysql Query Result lokal speichern

Das mit den Zugriffen auf den Servern sollte keine Probleme bei uns verursachen. Wir haben da unbegrenzte Möglichkeiten, was die Ressourcen Nutzung angeht.

@Misco So ähnlich habe ich es bereits versucht.

PHP:
$result = mysql_query($sql);

$data = file_get_contents('datei.txt',$result);

Die Datei wurde zwar erstellt, aber der Inhalt war gleich Null.
 

Robbyn-

PHP / Flex Programmierer

AW: Mysql Query Result lokal speichern

Sorry nicht file_get_contents, meine file_put_contents, erstellen einer Datei.

P.S.

So würde meine Datei ungefair aussehen, habe sie jetzt nehmlich nicht hier, bin auf Arbeit.

PHP:
<?php
function query($sql)
{
	dirname('PATH',	str_replace("\\","/",dirname(__FILE__))."/");
	$md5	=	md5($sql);
	
	if(file_exists(PATH."dbCache/$md5.txt"))
	{
		$data	=	file_get_contents(PATH."dbCache/$md5.txt");
		
		return $data;
	}
	else
	{
		$query	=	parent::query($sql);
		
		$create	=	file_put_contents(PATH."dbCache/$md5.txt",$query);
		
		return $query;
	}
}
?>
 
Zuletzt bearbeitet:

Zampano_

Nicht mehr ganz neu hier

AW: Mysql Query Result lokal speichern

Hast du dir mal $query ausgeben lassen?
Wenn das einfach das Ergebnis aus mysql_query ist (so wie in deinem ersten Beispiel) dann hast du da ja erstmal nur einen Reccourcehandler auf das Ergebnis, aber noch nichts was du in eine Datei schreiben kannst.
Du müsstest das Ergebnis erst noch "fetchen" (mysql_fetch_array, mysql_fetch_object....), einen String basteln und den dann speichern.
 

Robbyn-

PHP / Flex Programmierer

AW: Mysql Query Result lokal speichern

Achso, ich kann also nicht direkt von mysql_query den Ressourcehandler speichern?!. Dann werde ich es fetchen, mit json abspeichern und wenn es gebraucht wird wieder als array zurück geben, damit komm ich klar :D

Danke für deine (eure) Hilfe :)

Grüßen
Robbyn
 

Zampano_

Nicht mehr ganz neu hier

AW: Mysql Query Result lokal speichern

Würd auch nichts nutzen den Handel zu speichern, da der Cursor (Handel) nach der Session meines Wissens nach eh nicht mehr da ist.

Gerne. Gruß
Sascha
 

Refus

aka Noisy

AW: Mysql Query Result lokal speichern

Ich pflichte da Chriss1987 vollkommen zu. Was du da vor hast ist performance technisch totaler Käse, vor allem weil du doch wohl Ressourcen mit so einer Abfrage sparen willst, oder etwa nicht?
Stattdessen solltest du dir lieber mal die bereits von MySQL ansehen.
Und das mit den "unbegrenzten Ressourcen" ist ja auch so ne Sache.
 

Robbyn-

PHP / Flex Programmierer

AW: Mysql Query Result lokal speichern

Unsere Firma besitzt 3 Server Centren, ich übertreibe also nicht wenn ich meine unbegrenzte Ressourcen Möglichkeiten.

An SQL Cache habe ich bereits gedacht, wäre auch eine saubere alternative, ich werde mal schauen was ich da genau mache.
 

Refus

aka Noisy

AW: Mysql Query Result lokal speichern

Spielt doch keine Rolle ;) Wir haben auch nicht weniger Server und trotzdem sind wir immer angehalten möglichst performant und sauber zu Programmieren.

Ich meine, wozu soll die "lokale Speicherung" gut sein, wenn du damit nicht Last vom Server nehmen willst, den ein MySQL Query ist um einiges schneller als das Auslesen einer Datei (und auch Ressourcen schonender). Kannst ja mal ein Speedtest machen.
Das ist ein bisschen paradox Ressourcen sparen zu wollen und dann mit dem Argument zu kommen es wäre ohnehin egal. Aber ich möchte dir da auch nicht weiter reinreden, es klingt für mich nur nicht wirklich sinnvoll.
 

Robbyn-

PHP / Flex Programmierer

AW: Mysql Query Result lokal speichern

Wie bereits erwähnt, werde ich schauen was ich davon verwende. Ich werde mich in nächster Zeit dazu nochmal äussern.
 

Zampano_

Nicht mehr ganz neu hier

AW: Mysql Query Result lokal speichern

Ich meine, wozu soll die "lokale Speicherung" gut sein, wenn du damit nicht Last vom Server nehmen willst, den ein MySQL Query ist um einiges schneller als das Auslesen einer Datei (und auch Ressourcen schonender).

Das kann man so generell aber nicht sagen. Willst du den gesamten Inhalt einer Datei haben (und nicht sequentiell jede Zeile einzeln lesen) und ist das Ergebnis einer Anfrage an MySQL nicht gecachet, dann ist der Dateizugriff durchaus schneller und eventuell auch überlegenswert.
Eine Beispielanwendung könnte doch z.B. sein: Jeden Morgen wird ein Report mittels SQL über zig Tabellen erstellt. Jetzt kann man das Ergebnis für wiederholte Zugriffe entweder Cachen, oder in eine Datei ablegen. Ersteres belegt dauerhaft RAM und ist etwas schneller, zweiteres ist etwas langsamer, belegt aber weniger RAM.
(Die dritte Möglichkeit, das SQL immer wieder aufzurufen (also nicht zu cachen), steht eher nicht zur Diskussion, da das SQL zu langsam wäre)
 
Zuletzt bearbeitet:

Robbyn-

PHP / Flex Programmierer

AW: Mysql Query Result lokal speichern

Ausserdem werden dabei auch fette Querys losgeschickt die über 5-6 Tabellen Zugriff erwarten. Da ist es, denke ich mir, deutlich besser über ein Dateisystem dies zu lösen. Nebenbei will ich auch nur den MySQL Server entlasten.
 

Refus

aka Noisy

AW: Mysql Query Result lokal speichern

Stimmt, bei einem Report wäre das Abspeichern besser. So hat sich die Frage nur nicht angehört.

Du kannst ja einfach mal beide Varianten testen und gucken was länger dauert und was weniger Ressourcen benötigt. Ab welcher Komplexität es besser ist einen eigenen Cache anzulegen kann ich dir nicht beantworten, wie gesagt das müsste man einfach im spezifischen Fall ausprobieren.
Ein Join über mehre Tabelle verbraucht vlt. sogar weniger als komplexere Berechnungen über nur 2-3 Tabellen.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben