-
AVR als MySQL-Server?
Moin.
Es gibt ja schon einige Projekte, in denen ein AVR als normaler HTTP-Server arbeitet und z.B. per SD-Karte eine Webseite zur Verfügung stellt.
Kennt jemand so ein Projekt, in dem der AVR die Funktion eines MySQL-Servers übernimmt? Also Datenbanken auf ner SD-Karte speichern, mit PHPMyAdmin verwalten und dann von "irgendwo" auf Port 3306 zugreifen und die Daten holen?
Wäre auf Dauer stromsparender als ein direkter Rechner, der nix anderes zu tun hat, als nur die Datenbank zur Verfüfung zu stellen.
mfG
-
Hi Jaecko,
ich fürchte fast, dass ein Datenbankserver etwas zu viel ist für nen normalen AVR. Vieleicht mit nem ARM (von Atmel oder sonstwem). Auf jeden Fall behaupte ich jetzt hier in die Runde rein, dass Datenbankserver UND Webserver Und PHP (phpMyAdmin) für nen AVR sicher zuviel ist.
Als Alternative kann ich dir aber folgendes Vorschlagen:
1.) Ein Rechner, der dauerhaft läuft und mit VMWare Server mehrere andere Rechner (MySQL, Webserver, Fileserver, Printserver, Mailserver was dir sonst noch so einfällt) virtualisiert...
2.) Ein Alixboard zum Beispiel das Alix2c1. Genauere Infos direkt beim Hersteller: http://www.pcengines.ch/alix.htm
Ich verwende so ein Alix board übrigens als Router mit IPCop drauf, funktioniert super...
Mfg.
Lemon
-
Eventuell kannst du dir auch einen einfachen DSL - Router besorgen und openWrt o.ä. drauf installieren.
Als Speicher könntest du dann ggf einen USB Stick nutzen (müsste eingentlich funktionieren)
-
Ein normaler AVR scheitert allein schon am Arbeitsspeicher.. Und die Performance wäre wohl auch nicht tragbar.
-
schau mal hier
www.ulrichradig.de
edit: geht! schau mal unter avr , da sind 2 webserver beschrieben
-
n PHP Parser auf AVR ... hmmm ... nicht unmöglich
aber kaum realistisch.
Wenn dann müsstest Du den quasi zu Fuß proggen
und das wär schon ne ziemlich heftige Geschichte.
Das liefe dann in etwa auf nen Apache Server hinaus,
ohne OS, nicht wirklich.
Such mal nach dem kleinst möglichen System für n
Linux OS, dann haste vermutlich Dein System.
ARM9 oder AVR32 halte ich für realistisch.
-
Thx für die Anregungen/Hinweise.
Also so wie's aussieht, wirds mit dem AVR wohl nichts. Diese Alix schauen so aufs erste nicht schlecht aus. Mal umsehen, wo's die so gibt.
HTTP/PHP muss hier garnicht sein, das kann alles extern ablaufen (bzw. läuft auch extern ab). Es würde nur um die reine Datenbankverwaltung gehen.
Per VMWare wärs zwar machbar, aber das löst das eigentliche "Problem" nicht, dass ja dazu kein "grosser" PC mehr verwendet werden soll.
-
Bei der Datenbankverwaltung geht es ja gerade
um die Benutzeroberfläche. Ne MySQL Datenbank
hat die nämlich direkt nicht, dafür gibts dann
phpMyAdmin und das ist eben PHP-Script.
php Files sind im Prinzip HTML Files mit
eingebetteten php Scripten, die beim Aufruf der
Datei interpretiert werden. Natürlich serverseitig.
Daher brauchts nen Webserver, z.B. Apache
der das dann erkennt und dem php Parser zuschiebt.
Je nach Servereinstellungen können Dateiendungen
für php-files sein:
.php
.php3
.php4
.phtml
.phtm
manchmal auch
.htm
.html
aber das macht man nicht so gern, weil dann auch
normale websites immer durch den Parser laufen, was
den Server dann mehr belastet.
ne normale php Seite ist in etwa so aufgebaut:
<html>
<head>
<title> xyz </title>
</head>
<body>
<?php
echo 'hallo Welt';
?>
</body>
</html>
Das ist dann ne ganz normale html Seite, nur der Teil zwischen
den php-Tags wird interpretiert. Dort stehen dann auch die
Sachen von der Datenbankanbindung, Datenbankaktionen usw.
drinne.
Hier hab ich mal nen Auszug aus nem Script, bei dem ich per
php n java-script erstelle ...
<script>
// (C) 2000 www.CodeLifter.com
// http://www.codelifter.com
// Free for all users, but leave in this header
// NS4-6,IE4-6
// Fade effect only in IE; degrades gracefully
// =======================================
// set the following variables
// =======================================
// Set slideShowSpeed (milliseconds)
var slideShowSpeed = 3000
// Duration of crossfade (seconds)
var crossFadeDuration = 3
// Specify the image files
var Com = new Array()
var Pic = new Array() // don't touch this
// to add more images, just continue
// the pattern, adding to the array below
<?php
$pfad=$_SERVER['REQUEST_URI'];
//echo $pfad;
$teilpfad = explode("?", $pfad);
$Files=array();
$verz=opendir(".");
while ($Datei=readdir($verz)){
array_push($Files,$Datei);
}
if (is_file("comment.txt") && $Datei= file("comment.txt")){
$Zaehler=0;
foreach ($Datei as $Zeile){
$Zeilegeteilt= explode(";",$Zeile);
//$filename[$Zaehler]=$Zeilegeteilt[0];
$comment[trim($Zeilegeteilt[0])]=trim($Zeilegeteilt[1]);
//$Zaehler++;
}
}
else {
$filename[0]="";
$comment[0]="";
}
sort($Files);
reset($Files);
//if (isset($HTTP_GET_VARS["Slide"])){
$bildzaehler=0;
//print_r($Files);
while(list($index,$Datei) = each($Files)){
if (is_file($Datei)){
$Dateierweiterung=pathinfo($Datei);
$Dateierweiterung=$Dateierweiterung["extension"];
if (strlen($Datei)>3 && $Datei<>"Thumbs.db"){
if ($Dateierweiterung=="jpg" or $Dateierweiterung=="JPG"){
if (is_file("$Datei")){
echo "Pic[$bildzaehler] = 'http://www.weingut-hoerner.de".$teilpfad[0].$Datei."'\r\n";
if (array_key_exists($Datei, $comment)){
echo "Com[$bildzaehler] = '".$comment[$Datei]."
'\r\n";
}
else {
echo "Com[$bildzaehler] = '
'\r\n";
}
$bildzaehler++;
}
}
}
}
}
//}
?>
// =======================================
// do not edit anything below this line
// =======================================
var t
var j = 0
var p = Pic.length
var preLoad = new Array()
for (i = 0; i < p; i++){
preLoad[i] = new Image()
preLoad[i].src = Pic[i]
}
function runSlideShow(){
if (document.all){
document.images.SlideShow.style.filter="blendTrans (duration=2)"
document.images.SlideShow.style.filter="blendTrans (duration=crossFadeDuration)"
document.images.SlideShow.filters.blendTrans.Apply ()
}
document.images.SlideShow.src = preLoad[j].src
document.getElementById('comment').innerHTML = Com[j]
//document.getElementById('comment').text=Com[j]
if (document.all){
document.images.SlideShow.filters.blendTrans.Play( )
}
j = j + 1
if (j > (p-1)) j=0
t = setTimeout('runSlideShow()', slideShowSpeed)
}
</script>
das könnte im prinzip auch in C oder Bascom funktionieren
mit etwas umbau versteht sich.
Was Du auf nem AVR machen kannst wär ne
Clientseitige verarbeitung z.B. per Java-Script.
Oder Java Applet. Sprich Du schickst Deinen gesamten
Datenbestand, der auch z.B. in ner csv-Datei liegt
mit Rüber zum Client, der führt dann die gewünschten
Operationen durch und schickt die neue Datenbank
als csv an den Server zurück, der sie dann wieder
auf der SD-Karte speichert ... der Haken ist nur, dass
Quasi immer nur ein Client das machen kann.
Und es gibt halt etwas mehr Traffic.
Und natürlich ist der gesamte Datenbestand für den
Client ersichtlich.
-
Also den Aufbau mit PHP & Co kenn ich schon.
Zur Zeit ist es so,dass ein Server A die ganze Oberfläche bietet, also Webseite, PHP etc. Server B (der, der ausgetauscht werden soll) beinhaltet nur die Datenbank und ist auch nur über Port 3306 erreichbar. Fällt der aus, läuft zumindest die Webseite noch und alle php-Daten, die keinen Datenbankzugriff brauchen.
Die .php greifen also nicht kalssisch per "localhost" drauf zu.
aber das mit dem eigenen "Protokoll" wär wohl das einfachste. Geändert sind die phps ja gleich.
-
ach so, jetzt versteh ich ... praktisch
den AVR als Fileserver nutzen ...
ja, das könnte gehen.
Kommt halt auch auf die Datenmenge an.
bei $_POST auf den AVR weiß ich nicht
bescheid, da muss ich passen.
Über Get kleine Datenpakete im x Byte Bereich
könnte man vermutlich zusammenstricken
aber x Kilobyte, da wirds RAMmäßig halt eng.