php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.10.2011, 12:59  
Neuer Benutzer
 
Registriert seit: 12.10.2011
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
schienentraktor befindet sich auf einem aufstrebenden Ast
Standard Aktive Server Rollenspiele - Downloadmanager

Hallo liebe (noch) Freunde

Noch, desswegen weil Ich nun ein Problem vorstellen möchte welches für mich ein ganz schweres & heisses Eisen darstellt.Ich denke das eine genaue Lösung meines Problems vielen Leuten im Netz helfen wird, den Ich habe diesbezüglich nichtmal Ansatzweise was in der Google-Welt gefunden.

Ich schildere euch kurz mein Projekt:

In zwei weiteren Treads habe Ich bereits kleinere Probleme ansatzweise lösen können. Es geht darum einen Downloadmanager zu erstellen.

Meine Netzwerkinfrastruktur:

masterwebserver222
192.168.4.222
Debian 6.0

slavewebserver223
192.168.4.223
Debian 6.0

slavewebserver224
192.168.4.224
Debian 6.0

slavewebserver225
192.168.4.225
Debian 6.0

slavewebserver226
192.168.4.226
Debian 6.0

Bereits realisierte Module:

Admin Interface mit voll funktionsfähigem CRUD
MD5 Filechecking (Prüft auf Duplikate)
Servercheck

Der Masterserver übernimmt folgende Aufgaben:

Mirrorverteilung auf alle Slaveserver inkl MySQL DB Backup
Alle Downloads egal von welchem server laufen über 192.168.4.222


Folgende Punkte müssen im nächten und letzten Modul erfüllt werden:

--> Falls der Masterserver aussteigt soll man per E-Mail benachrichtigt werden und es soll automatisch ein neuer Master gewählt werden. Zusätzlich soll bei Wartungsarbeiten an einem Server manuell im Admin Interface ein neuer Server bestimmt werden können.

--> Jeder Server kann temporär die Rolle des Masters übernehmen und andere Slave Server mit seinen neusten Daten versorgen.

--> Greift zum Beispiel Admin 1 auf das Adminpanel des slaveserver224 zu und verändert einige Dateien und fügt einen oder mehrere Datensätze der Datenbank hinzu, so erhält dieser Server automatisch die masterrolle und ist für die verteilung der Mirrors zuständig.

--> Greift Admin 1 auf den slaveserver224 zu und wärend desssen möchte Admin 2 noch auf dem slaveserver226 einige änderungen machen so soll dem Admin 2 der Zugriff verwehr werden!

--> Jeden Sonntag soll der Master automatisch mittels Cronjob seine Daten an die anderen Salves verteilen. dabei soll jeder der Server zuerst anhand seiner IP in der Datenbank nachschauen ob er Master ist, falls nicht soll er nichts machen.


Wer weitere Informationen benötigt dem wird gerne Stoff geliefert... Ich wollte nicht zuviel schreiben da es sonst schon recht kompliziert ist.

Wer mir zur Lösung dieses harten Brockens weiterhelfen kann wird mit Taschengeld belohnt... den dann hab Ichs geschaft!

Edit: Ich wollte noch sagen das ich NOCH nicht aud der suche nach Codeschnipseln bin sondern erstmal die notwendingen "Module" suche...

Was brauche ich für Scripts
Wie kann Ich das realisieren
Was brauch ich für Hard/Software Anforderungen


Hat jemand damit schon Erfahrung gemacht oder mal was ähnliches Konzipiert oder gar umgesetzt?

Besten Dank und Gruss Patrick

Gruss Patrick
schienentraktor ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.10.2011, 14:13  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Stichwort: Watchdog, Heartbeat. Damit findest du bei Google mehr als genug. Davon abgesehen würde ich pauschal abraten,l sowas ernsthaft mit einfachen Apache-Webservern/PHP zu realisieren. Wenn du ernsthaft an einer Lösung interessiert bist, jenseits Apache aber doch mit PHP, melde dich. Ich habe da etwas (kostenpflichtiges) und auf Java basierendes, geht ab 2012 in Beta.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist gerade online   Mit Zitat antworten
Alt 12.10.2011, 14:24  
Neuer Benutzer
 
Registriert seit: 12.10.2011
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
schienentraktor befindet sich auf einem aufstrebenden Ast
Standard

Ich habe jetzt mal der Datenbanktabelle tbl_server eine neue Spalte zugewiesen, die Tabelle sieht nun so aus:

Code:
+-------------+----------------------+----------------+--------------+
| server_prio | server_address       | server_comment | server_rolle |
+-------------+----------------------+----------------+--------------+
|           5 | http://192.168.4.226 |                | slave        |
|           4 | http://192.168.4.225 |                | slave        |
|           3 | http://192.168.4.224 |                | slave        |
|           2 | http://192.168.4.223 |                | slave        |
|           1 | http://192.168.4.222 |                | master       |
+-------------+----------------------+----------------+--------------+
Das Feld "server_rolle" dient als Flag. Alle Checks ob der Server nun Master is oder nicht laufen über diese Kolumne, natürlich in verbindung mit der "server_address"...

Sollte Ich ein Configfile erstellen in welchem geregelt wird was ein Master und ein Slave zu tun hat oder eben nicht zu tun hat?

Rollenfunktionen:

Master-Status

Muss: Jeden Sonntag um 00:00 Uhr, einen MySQL Dump machen (Cronjob)
Muss: Jeden Sonntag um 01:00 Uhr, alle Downloadfiles auf die anderen Server mirroren (cronjob)
Muss: Nach dem erfolgreichen übertragen der Files auf die Partnerserver ein Mail absenden.
Muss: Admin Zutritt zum Adminpanel gewähren
Darf nicht: MySQL InsertInto Script ausführen (cronjob)

Slave-Status

Muss: Jeden Sonntag um 06:00 Uhr, das InsertInto (backup einlesen) ausführen
Darf nicht: Admins auf das Adminpanel lassen um änderungen vorzunehmen.

Login auf das Admin Panel und die Logik

Loggt sich der Admin auf einen Server (gem. Beispiel auf 192.168.4.222) welcher zu diesem Zeitpunkt die "master"-Rolle geniesst, so darf sich der Admin ohne weiteres auf das Admin Panel einloggen und änderungen vornehmen.

Loggt sich der Admin auf dem Server (gem. Beispiel auf 192.168.4.225) welcher momentan unter der "slave"-Rolle zu leiden hat, wird der Admin mit einer Error meldung empfangen:" Ich bin leider Slve, du darfst mich nur als master bearbeiten" Möchtest du mich zum "master machen? Ja/Nein
Bei Ja muss in der Datenbank nun der Flag von slave auf master gewechselt werden und der ehemalige master auf slave.

War dies hilfreich?
schienentraktor ist offline   Mit Zitat antworten
Alt 12.10.2011, 14:42  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
Zitat von schienentraktor Beitrag anzeigen
Möchtest du mich zum "master machen? Ja/Nein
Bei Ja muss in der Datenbank nun der Flag von slave auf master gewechselt werden und der ehemalige master auf slave.
Und da die Server sich nur sonntags synchronisieren, gehen alle in der Zwischenzeit neuen Daten verloren bzw. bleiben verwaist auf dem Slave, sehe ich das richtig?
fab ist offline   Mit Zitat antworten
Alt 12.10.2011, 15:21  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Daten, Daten sein lassen und in der DB permanent speichern und nur die datenbanken replizieren, so hast du permanent auf allen beteiligten Systemen den selben Datenbestand und sparst dir die 1-tag-inner-woche-kopier-alles-wie-blöde-aktion.

Die einzelnen Webserver erzeugen jeweils ihren eigenen (mem)cache um die daten als html dokumente vorzuhalten.

Aber warum einfach, wenn es auch umständlich geht.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 12.10.2011, 15:31  
Neuer Benutzer
 
Registriert seit: 12.10.2011
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
schienentraktor befindet sich auf einem aufstrebenden Ast
Standard

Hallo trOy

Vielleicht hätte Ich noch sagen sollen das beim mirror script mit "rsync" gearbeitet wird... und nur neue Files auf die Server geschickt werden.

Das Ich die php-Dateien (System) nicht jedes mal mitkopiere ist Selbstverständlich.

Aber es geht mir ja hauptsächlich um die Rollenverteilung, diese sollten ja alle mit Bordmitteln realisierbar sein, nur mit welchen und wie? Sowie die Rechtevergabe...

Gruss Patrick
schienentraktor ist offline   Mit Zitat antworten
Alt 12.10.2011, 15:38  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Files in die Mysql treten ( blobs ) und replizieren.

Denk nicht in schubladen, denk in Schreibtische.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 12.10.2011, 16:42  
Neuer Benutzer
 
Registriert seit: 12.10.2011
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
schienentraktor befindet sich auf einem aufstrebenden Ast
Standard

So ich bekomm langsam nen Überblick....

Benötigte Module

Login Script

Ich muss ein Login Script entwickeln, welches auf einem HTML Formular basiert. Beim login muss mit einer einfachen if-Anweisung mit abfrage an den Datenbank-Flag überprüft werden ob der Server auf dem sich der User anmeldet „master“ oder „slave“ ist. Falls er nicht „master“ ist Error ausgeben:“Um mich zu bearbeiten muss Ich „master“ sein. Möchtest du mich zum Master machen?
Option Nein: Bricht das Login verfahren ab.
Option Ja: Macht folgendes:
1. Setzt den Flag des bisherigen „masters“ auf „slave“
2. Setzt den Flag des CurrentServers auf „master“
3. Login-Script startet eine Seesion und der User kann aufs Admin-Panel

Kann mir hier jemand helfen ein Abgestimmtes Login-Script zu Entwickeln?

Mirror Script (angepasste Version)


Ich muss das bestehende Mirror Script so anpassen das es zuerst eine if Anfrage an die Datenbank stellt ob der CurrentServer mit „master“ gflagt ist. Ist diese bedingung wahr so soll er den nächsten befehl im script ausführen. Ist er nicht wahr soll er sofort abbrechen.

Bestehendes Script (mirror.sh)

Code:
#!/bin/sh

#	Hier soll die IF Anweisung hinkommen

		
#	Backup Anweisung zum Dumpen

	mysqldump --user=root --password=asdf1234 --databases db_filemanager > /var/www/downloadseite/dbupdate/db_backup	

#	rsync Anweisung		  Quelle		  Ziel	

	rsync -avz -e ssh /var/www/downloadseite/ patrick@192.168.4.223:/var/www/downloadseite/

	rsync -avz -e ssh /var/www/downloadseite/ patrick@192.168.4.223:/var/www/downloadseite/

	rsync -avz -e ssh /var/www/downloadseite/ patrick@192.168.4.224:/var/www/downloadseite/

	rsync --avz -e ssh /var/www/downloadseite/ patrick@192.168.4.225:/var/www/downloadseite/

	rsync -avz -e ssh /var/www/downloadseite/ patrick@192.168.4.226:/var/www/downloadseite/
Kann mir jemand mit der IF-Anweisung helfen?

Insert-Into Script (angepasste Version)

Ich muss das bestehende Insert-Into Script so anpassen das es zuerst eine if Anfrage an die Datenbank stellt ob der CurrentServer mit „slave“ gflagt ist. Ist diese bedingung wahr so soll er den nächsten befehl im script ausführen. Ist er nicht wahr soll er sofort abbrechen.

@trOy
Zitat:
Denk nicht in schubladen, denk in Schreibtische.
baaaaaah wtf... das ist doch die unsauberste Methode die es überhaupt gibt... Files die um die 100MB und mehr sind in ne Datenbank zu stopfen... Das macht ja mehr probleme als es nutzen bringt. Zudem fällt die Lösung eh aus da Ich nicht mit der MySQL Replikation arbeite...

Gruss Patrick

Geändert von schienentraktor (12.10.2011 um 16:58 Uhr).
schienentraktor ist offline   Mit Zitat antworten
Alt 12.10.2011, 16:56  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Ich hab schon ( linux ) DVD-ISOs über mysql repliziert ohne auch nur einmal Probleme zu bekommen.. und die haben im Regelfall 4,7+ GB, dauert halt nur etwas bis die änderungen an den Slaves ( aufgrund der Datenmenge ) ankommt, aber du brauchst dir über Fehlerbehandlung, Ablaufkontrolle und dem sonstigen drumherum keine Gedanken machen, das übernimmt Mysql für dich.

Aber nungut, schauen wir doch mal was aus deinem Lazy-Mirroring wird.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 12.10.2011, 19:22  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Mal eine Frage: Weshalb willst du eigentlich ein solches Cluster einführen? Was willst du damit erreichen? Was ist dein Ziel? Oder machst du sowas aus Spass an der Freude?
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Verbindung mit MSSQL Server und PHP 5.2 (Zend Server) shimu Datenbanken 1 21.09.2011 19:06
Session Server lubb PHP-Fortgeschrittene 11 17.08.2011 13:56
[SUCHE] Debian Lenny Server Admin (incl. ISPConfig 3) Cuda Gewerblich 0 16.05.2011 12:29
Strato sperrt mir den Server !! pfump Server, Hosting und Workstations 20 19.03.2011 10:49
[Erledigt] mysql_query() mit SQLDump princemichi PHP Einsteiger 4 07.03.2011 22:33
pdf auf fremden Server generieren lassen und anschließend auf eigenem Server speicher JankoHack PHP-Fortgeschrittene 5 20.05.2009 21:18
exec() auf win 2003 Server geqoo PHP-Fortgeschrittene 9 30.04.2009 21:57
Connection zu MSSQL Server 2008 DonBolli Datenbanken 2 11.04.2009 16:57
[Erledigt] Apache install geht nicht SteiniKeule Server, Hosting und Workstations 7 27.02.2009 08:40
Datei auf ANDEREM Server verschieben SirRobin PHP Tipps 2008 6 16.11.2008 12:18
Wireshark SSL Handshake debugging-Handshake protokoll mittels PHP + Curl brian johnson Off-Topic Diskussionen 0 06.11.2008 11:54
Mysql startet unter Debian nach Update nicht mehr namlit Server, Hosting und Workstations 4 05.08.2008 15:49
[Erledigt] WAMP unter Windows 2000 Server oder Windows 2003 Server Mecronomecon Server, Hosting und Workstations 3 18.06.2008 09:15
[Erledigt] verschiedene Versionen auf einem W2K3 Server betreiben PHP Tipps 2006 2 13.01.2006 17:39
[Erledigt] Mit PHP Script auf einem Root Server per SSH einlogen PHP Tipps 2005 5 27.03.2005 19:24

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
download manager php

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:11 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum