php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.01.2010, 16:47  
Neuer Benutzer
 
Registriert seit: 22.01.2010
Beiträge: 7
PHP-Kenntnisse:
Anfänger
TheNerd befindet sich auf einem aufstrebenden Ast
Standard Fragen bzgl. Architektur meiner Anwendung

Hallo Liebe Community,

ich werde für eine Seminararbeit eine Anwendung mit PHP und Zend realisieren, bei der es um automatische Datenübertragung geht (Das ist der Kern der Anwendung). Im ersten Schritt gilt es folgende Funktionalitäten einzubauen:

1. File Operationen (verschieben, umbenennen, löschen, kopieren, in Teile splitten, Teile zusammenführen)
2. Verzeichnisse rekursiv auslesen
3. Befehle an eine Linux Shell schicken
4. Rsync Befehle zusammenbauen und an die Shell senden

Zu 1.

Für die File Operationen würde sich doch hier das Command Pattern anbieten oder? Um Dateien zu splitten und wieder zusammen zu führen werden Befehle an direkt die Shell geschickt. Informationen zu Dateien und den Teilen einer Datei, werden in einer Datenbank gehalten.

Zu 2.

Hier dürfte doch die SPL mit ihren entsprechenden Iteratoren genügend Funktionen bieten, um Verzeichnisse rekursiv auszulesen und Dateien entsprechend in einer Datenbank zu registrieren. Informationen zu einzelnen Files können ja in einem SPL Object gespeichert werden, mit denen dann entsprechend weitergearbeitet werden kann.

Zu 3.

Hier habe ich mir auch eine eigene Klasse vorgestellt, welche alle Aktionen die mit der Shell zu tun haben zentral kapselt, wie z.B. Befehle senden, Prozesse killen, prüfen ob bestimmter Prozess läuft, MD5 Checksum bilden etc.
Würde sich hier ein gewisses Design Pattern anbieten und ist es ohne größeren Aufwand möglich, festzustellen ob ein „mv datei1 datei2“ erfolgreich war, oder ob beispielsweise Berechtigungen fehlen? Wie verhält es sich mit einzelnen Übertragungen, wie kann ich am einfachsten feststellen ob diese Erfolgreich war, ob der Prozess abgebrochen wurde etc.?

Zu 4.

Dateien sollen über rsync verschickt werden, ich habe mir gedacht eine Klasse einzubauen die dafür zuständig ist, die nötigen Befehle „zusammenzubauen“ und diese dann an die Klasse, welche für Shellzugriffe zuständig ist weiterzureichen.

Hinter all diesen Punkten steht natürlich eine Datenbank, welche laufende Prozesse, vorhandene Dateien und File Parts verwaltet und registriert. Ich hoffe, dass ihr mir ein paar Tipps oder Verbesserungsvorschläge bzgl. der Architektur geben könnt. Natürlich will ich keinen Code von euch, mir genügen schon ein paar Tipps von erfahrenen Entwicklern. Die Anwendung soll iterativ implementiert werden, zunächst sollten die genannten Funktionalitäten bereitstehen, eine Steuerung über ein Frontend wird natürlich erst im späteren Verlauf entwickelt.

Viele Grüße
TheNerd ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.01.2010, 00:31  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hi TheNerd,

frei nach der Unix-Philosophie würde ich hier PHP aussen vor lassen und ein vernünftiges Shell-Script scheiben. Das ist ebenso flexibel und konfigurierbar, man spart sich jedoch den Overhead, der durch das Wrappen von Shell-Commands passiert.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 24.01.2010, 11:42  
Neuer Benutzer
 
Registriert seit: 22.01.2010
Beiträge: 7
PHP-Kenntnisse:
Anfänger
TheNerd befindet sich auf einem aufstrebenden Ast
Standard

Hallo dr. e,

zunächst Vielen Dank für deine Antwort Ja, mein erster Ansatz war auch diese ganze Problematik durch Shell Scripte zu lösen, jedoch wird ausdrücklich verlangt, dass diese Vorgänge durch PHP gesteuert werden. Ob dies Sinn macht ist die andere Frage, aber ist eine Anforderung

Falls noch jemand ein paar nützliche Tipps hat, immer her damit, würde mich freuen

Viele Grüße
TheNerd ist offline   Mit Zitat antworten
Alt 24.01.2010, 13:08  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo TheNerd,

Architektur-technisch ist das Thema recht wenig anspruchsvoll. Du hast quasi zwei bis vier Domänen-Objekte, ein bischen Command-Pattern für die Abarbeitung der Jobs und eine GUI für die Verwaltung der Jobs.

Überleg doch bitte erst mal, welche Domänen-Objekte das sind und wie du diese modellieren müsstest. Dann kannst du beginnen, dir Gedanken über die Realisierung der GUI zu machen. Hier sind IMHO
  • Login
  • Jobs anzeigen, anlegen, bearbeiten, löschen
  • ...
notwendig. Wenn du ohnehin schon

Zitat:
4. Rsync Befehle zusammenbauen und an die Shell senden
vorhast, würde ich den Weg gehen, die GUI komplett in PHP zu schreiben und den Rest als Perl/Python/Shell-Scripte, die die Jobs abarbeiten, die in der Datenbank von der GUI gespeichert werden. Hab sowas mal letztes Jahr implementiert und ich muss sagen: das gefällt mir sehr gut. Es folgt dann auch der Unix-Philosophie, dass man für jeden Job das Tool nimmt, das dafür am besten geeignet ist. Du baust ja auch nicht rsync in PHP nach, nur weil dir jemand sagt, dass er das toll finden würde. Hier musst du deinen Auftraggeber auch ein wenig erziehen, bzw. ihn beraten!
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 25.01.2010, 17:21  
Neuer Benutzer
 
Registriert seit: 22.01.2010
Beiträge: 7
PHP-Kenntnisse:
Anfänger
TheNerd befindet sich auf einem aufstrebenden Ast
Standard

Hallo dr.e.

danke für deine Antwort. Ich wollte an dieser Stelle nocheinmal auf das Command Pattern eingehen. Die abzuarbeitenden Schritte in dieser Anwendung setzen sich ja immer wieder aus gewissen Bausteinen zusammen wie:

Verzeichnis auslesen
Dateien splitten / zusammenbauen
Dateien versenden
Neue Files registrieren
Alte Dateien löschen
und noch einige mehr...

Im Prinzip könnte man ja jeder dieser Tätigkeiten als eigene Command Klasse implementieren und dann so abarbeiten wie man sie braucht. Sind gewisse Abhängigkeiten zwischen Schritten erlaubt/konform? Wie z.B. ausführen des ReadDirCommands, danach die ausgelesenen Dateien der SplitFileCommand übergeben, welche dann auf Mindestgröße prüft und gegebenenfalls die Datei zerlegt.

Des Weiteren habe ich Hilfsklassen angelegt, die sich um Dinge wie Befehle an Shell senden, Verzeichnisse löschen / kopieren, Datei löschen / kopieren oder Verzeichnis auslesen kümmern. Ist das nutzen von diesen Klassen in den Command Klassen dann konform? Im Prinzip sind die Kommand KLassen ja nur Wrapper oder? Wie sieht es denn dann performance technisch aus, dadurch das soviele Objekte erzeugt werden?

Der Rest der Anwendung wie GUI (wird komplett mit ExtJS realisiert und wird wohl ein Thema für sich), oder Userverwaltung kommen erst später hinzu. Zunächst soll diese Datenübertragung stehen.

Fragen über Fragen..

Vielen Dank und schöne Grüße
TheNerd ist offline   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
ein paar Fragen (wegen eines Loginhistory) Ninos PHP Tipps 2009 5 04.04.2009 14:59
PHP/MySQL Softwareprojekt - grundsätzliche Fragen spacemanspiff Software-Design 1 30.01.2009 14:40
Renommee Funktion wirft Fragen... tomtaz Board-Support 11 02.07.2008 21:18
gettext, einige fragen notyyy PHP Tipps 2008 12 01.05.2008 12:09
PHP Anwendung auf CD ... andrew22 PHP Tipps 2006 22 03.08.2006 17:07
diverse Design-Fragen eines Frameworks mepeisen PHP-Fortgeschrittene 10 26.04.2006 01:57
Frage zur Anwendung einer Session mehrfach... GELight PHP Tipps 2006 10 12.03.2006 16:47
[Erledigt] PHP Anwendung im Browser PHP-Fortgeschrittene 13 30.05.2005 19:32
Generelle PHP Fragen Madden PHP-Fortgeschrittene 3 11.04.2005 01:24
Fragen bzgl. einer Anwendung die PHP-Code veröffentlicht PHP-Fortgeschrittene 8 17.01.2005 13:21
[Erledigt] Allgemeine Anfänger Fragen PHP Tipps 2004-2 5 20.12.2004 14:57
[Erledigt] 2 Fragen bzgl. der E-Mail Funktionen PHP-Fortgeschrittene 4 12.10.2004 03:25
[Erledigt] Anwendung per PHP steuern PHP-Fortgeschrittene 1 26.09.2004 18:03
Fragen über Fragen :) Igäl PHP Tipps 2004 3 26.08.2004 08:59
[Erledigt] Fragen über Fragen... wer kann helfen? PHP Tipps 2004 2 08.07.2004 21:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php \verzeichnisse rekursiv auslesen\, php architektur, spl command pattern, architektouren mener, design anwendung php, architektur php anwendung, \architekur der anwendung\, extjs anwendung, shell skript kommandos zusammenbauen, php software good architektur, php architekur, \sw-architektur php-anwendung\, fragen zur architektur, design php architektur, php anwendung, architektur der anwendung

Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 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