php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.09.2005, 19:41  
Erfahrener Benutzer
 
Registriert seit: 22.03.2005
Beiträge: 355
faux
faux eine Nachricht über ICQ schicken faux eine Nachricht über AIM schicken faux eine Nachricht über MSN schicken faux eine Nachricht über Yahoo! schicken
Standard Datei auf FTP-Server ändern ohne lokal abzuspeichern

Hallo!

Ich will bei einem Projekt drei Möglichkeiten der Datenspeicherung anbieten:
1. MySQL; 2. Datei; 3. FTP.
Also das mit MySQL und Datei stellt ja weiter keine Schwierigkeit da. Aber beim FTP hab ich eine Frage.
Ja ich weiß, dass FTP als Speicherung so ziemlich das Ungeeignetste ist, aber es soll ja nur eine "Notlösung" sein, und ich rate bei der Installation auch davon ab, FTP aufgrund der dauer des Logins, etc. zu Benutzen.

Also: Ich habe die Datei mit den Daten am FTP-Server. Jetzt lade ich sie per ftp_fget in eine Datei auf den PHP-Server herunter und speichere sie unter ftp.tmp ab. Dann füge ich die Zeile in die heruntergeladene Datei ein und lade die Datei dann wieder auf den FTP-Server.
Jetzt die Frage:
Ist das eine gute Idee? Ich befürchte nicht.
Denn: Was ist, wenn zwei Personen gleichzeitig zugreifen wollen? Dann würde es ja einen Konflikt geben, weil es eben nur eine ftp.tmp geben kann.
Meine Lösung wäre, die Datei mktime().'.tmp' zu nennen. Also nach der aktuellen Zeit. Aber dann fällt mir ein, dass es eigentlich nicht schön ist, wenn ich die Datei lokal auf den PHP-Server speichere. Gibts es denn nicht eine andere Möglichkeit?
Die eigentliche Frage:
Lange Rede kurzer Sinn:
Wie kann ich eine Datei vom FTP-Server verändern und wieder rauf laden, ohne sie lokal abspeichern zu müssen?

Danke für jede Antwort!

Grüße Faux

Nachtrag:

Ein Codesegment sagt mehr als tausend Worte :wink::
PHP-Code:
<?php
    $ftpfile 
fopen('ftp.tmp''w+') or
      die(
'Fehler beim Erstellen der temporären FTP-Datei.');
    
$ftp ftp_connect($_CONFIG['host'], $_CONFIG['PORT']) or
      die(
'Fehler beim Aufbau der Verbindung zum FTP-Server.');
    
ftp_login($ftp$_CONFIG['user'], $_CONFIG['pass']) or
      die(
'Fehler beim Login beim FTP-Server.');
    
ftp_chdir($ftp$_CONFIG['dir']) or
      die(
'Fehler beim Wechseln des Verzeichnis.');
    
ftp_fget($ftp$ftpfile'user.php'FTP_ASCII) or
      die(
'Fehler beim Lesen vom FTP-Server.');
    
fseek($ftpfile0SEEK_END);
    
fwrite($ftpfile"$user|$pass|$name|$rights\n");
    
fflush($ftpfile); //Ist das hier überhaupt notwendig?
    
rewind($ftpfile);
    
ftp_fput($ftp'user.php'$ftpfileFTP_ASCII) or
      die(
'Fehler beim Upload auf den FTP-Server.');
    
ftp_close($ftp);
    
fclose($ftpfile);
    
unlink('ftp.tmp') or
      die(
'Fehler beim Löschen der temporären FTP-Datei.');
?>
Das ist jetzt noch die ftp.tmp - Lösung, aber vom Prinzip ist sie ja ident mit der mktime() - Lösung.
__________________
Wer weiß dass er nichts weiß, weiß mehr, als der der nicht weiß dass er nichts weiß.
www.e-faux.com
faux ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 01.09.2005, 20:35  
Erfahrener Benutzer
 
Registriert seit: 09.11.2004
Beiträge: 194
greenrover
greenrover eine Nachricht über ICQ schicken greenrover eine Nachricht über Yahoo! schicken
Standard

wei währe es einfach mit:

http://de.php.net/manual/de/function.ftp-nb-get.php
greenrover ist offline   Mit Zitat antworten
Alt 01.09.2005, 21:20  
Erfahrener Benutzer
 
Registriert seit: 22.03.2005
Beiträge: 355
faux
faux eine Nachricht über ICQ schicken faux eine Nachricht über AIM schicken faux eine Nachricht über MSN schicken faux eine Nachricht über Yahoo! schicken
Standard

Danke für die Antwort!

Also soweit ich das verstehe, speichert die Funktion ja wieder lokal, oder?
__________________
Wer weiß dass er nichts weiß, weiß mehr, als der der nicht weiß dass er nichts weiß.
www.e-faux.com
faux ist offline   Mit Zitat antworten
Alt 01.09.2005, 21:31  
Matthias959
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von faux
Danke für die Antwort!

Also soweit ich das verstehe, speichert die Funktion ja wieder lokal, oder?
Zitat:
Zitat von php.net
ftp_nb_get -- Überträgt eine Datei von dem FTP-Server und speichert sie lokal (nicht blockierend)
Würde ich mal so deuten. :wink:
  Mit Zitat antworten
Alt 01.09.2005, 22:40  
Erfahrener Benutzer
 
Registriert seit: 22.03.2005
Beiträge: 355
faux
faux eine Nachricht über ICQ schicken faux eine Nachricht über AIM schicken faux eine Nachricht über MSN schicken faux eine Nachricht über Yahoo! schicken
Standard Re: Datei auf FTP-Server ändern ohne lokal abzuspeichern

Meine eigentliche Frage wäre aber das gewesen:
Zitat:
Zitat von faux
Lange Rede kurzer Sinn:
Wie kann ich eine Datei vom FTP-Server verändern und wieder rauf laden, ohne sie lokal abspeichern zu müssen?
__________________
Wer weiß dass er nichts weiß, weiß mehr, als der der nicht weiß dass er nichts weiß.
www.e-faux.com
faux ist offline   Mit Zitat antworten
Alt 02.09.2005, 01:04  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hallo.

Soweit ich weiß, kannst du mit FTP nicht einfach Inhalte von Dateien auf dem entfernten Server manipulieren, oder Dateienzeilenweise rauf- und runterstreamen. Allerdings kannst du mit append Daten an Dateien anhängen.

Was jetzt konkret Sinn macht, hängt von deiner Anwendung ab. Ich denke, ab geschicktesten ist es wahrscheinlich auf dem entfernten Server eine HTTP-Schnittstelle anzubieten, die dir die CRUD-Funktionen anbietet.
Vielleicht machts auch Sinn, die einzelnen Datensätze als Dateien zu repräsentieren. Kommt eben drauf an...

Und das Problem mit den Race Conditions auf dem lokalen Server löst du mit tempnam() am einfachsten (andernfalls uniqid() anstatt mktime()). Aber damit hast du immernoch eine Race Condition auf dem remote Server.

Wenn du alle Zugriffe auf dies Datei kontrollieren kannst, kannst du vielleicht folgendes machen:

Datei data liegt auf dem entfernten Server.

Code:
// Versuchen zu lock-en
while (!ftp("rename data data_<zeitstempel>")) {

     wenn (data_<irgendeinzeitstempel> existiert und <ebendieserzeitstempel> älter als x Sekunden ist) {

        ftp("rename data_<alterzeitstempel> data_<aktuellerzeitstempel>"); // damit Lock wieder aufgehoben 
        continue;
    } else sleep (ein bisserl);
}
Datei runterladen, verändern, als data wieder hochladen, data_<zeitstempel> löschen
Basti
Basti ist offline   Mit Zitat antworten
Alt 02.09.2005, 08:03  
Erfahrener Benutzer
 
Registriert seit: 22.03.2005
Beiträge: 355
faux
faux eine Nachricht über ICQ schicken faux eine Nachricht über AIM schicken faux eine Nachricht über MSN schicken faux eine Nachricht über Yahoo! schicken
Standard

Hm...
Danke für die Hilfe.
Aber wäre es nicht einfach möglich einen Datei-Zeiger zu erstellen, der keine lokale Datei anlegt?
Also zum Beispiel, dass ich die Datei die ich vom FTP lade nicht lokal abspeichere, sondern in einen String lege, dort barbeite und dann den String wieder rauf lade... :S

NACHTRAG:

Aber die Idee mit uniqid() hab ich noch nicht gekannt, und die funktioniert eigentlich, also hätte sich das Problem erübrigt (außer es hat noch wer eine Lösung - man lernt ja nie aus... )

Danke.
__________________
Wer weiß dass er nichts weiß, weiß mehr, als der der nicht weiß dass er nichts weiß.
www.e-faux.com
faux ist offline   Mit Zitat antworten
Alt 02.09.2005, 10:37  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Zitat:
Zitat von faux
Aber wäre es nicht einfach möglich einen Datei-Zeiger zu erstellen, der keine lokale Datei anlegt?
Also zum Beispiel, dass ich die Datei die ich vom FTP lade nicht lokal abspeichere, sondern in einen String lege, dort barbeite und dann den String wieder rauf lade... :S
Hast du mal fopen() probiert?

Zitat:
Zitat von faux
Aber die Idee mit uniqid() hab ich noch nicht gekannt, und die funktioniert eigentlich, also hätte sich das Problem erübrigt (außer es hat noch wer eine Lösung - man lernt ja nie aus... ;) )
Wie gesagt: tempnam() ist hier der direkte und einfahste Weg ("tempnam -- Create file with unique file name").

Basti
Basti ist offline   Mit Zitat antworten
Alt 02.09.2005, 10:53  
Erfahrener Benutzer
 
Registriert seit: 22.03.2005
Beiträge: 355
faux
faux eine Nachricht über ICQ schicken faux eine Nachricht über AIM schicken faux eine Nachricht über MSN schicken faux eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Basti
Hast du mal fopen() probiert?
Zitat:
Zitat von faux
PHP-Code:
<?php
    $ftpfile 
fopen('ftp.tmp''w+') or
      die(
'Fehler beim Erstellen der temporären FTP-Datei.');
    
$ftp ftp_connect($_CONFIG['host'], $_CONFIG['PORT']) or
      die(
'Fehler beim Aufbau der Verbindung zum FTP-Server.');
    
ftp_login($ftp$_CONFIG['user'], $_CONFIG['pass']) or
      die(
'Fehler beim Login beim FTP-Server.');
    
ftp_chdir($ftp$_CONFIG['dir']) or
      die(
'Fehler beim Wechseln des Verzeichnis.');
    
ftp_fget($ftp$ftpfile'user.php'FTP_ASCII) or
      die(
'Fehler beim Lesen vom FTP-Server.');
    
fseek($ftpfile0SEEK_END);
    
fwrite($ftpfile"$user|$pass|$name|$rights\n");
    
fflush($ftpfile); //Ist das hier überhaupt notwendig?
    
rewind($ftpfile);
    
ftp_fput($ftp'user.php'$ftpfileFTP_ASCII) or
      die(
'Fehler beim Upload auf den FTP-Server.');
    
ftp_close($ftp);
    
fclose($ftpfile);
    
unlink('ftp.tmp') or
      die(
'Fehler beim Löschen der temporären FTP-Datei.');
?>
__________________
Wer weiß dass er nichts weiß, weiß mehr, als der der nicht weiß dass er nichts weiß.
www.e-faux.com
faux ist offline   Mit Zitat antworten
Alt 02.09.2005, 11:41  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Na, ich mein doch zum schrittweisen Auslesen der Datei auf dem FTP-Server...
Basti 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
datei von server auf server kopieren PHP Tipps 2008 3 06.10.2009 17:57
Großer Baum -> Große Datei -> Hohe Ladezeit :( PsychoEagle PHP Tipps 2008 7 22.09.2007 12:44
Lokal funktioniert alles -> auf Server fast nichts PsychoEagle Datenbanken 2 14.08.2006 08:43
Datei Formulardaten auf anderem Server ablegen cytrobic PHP Tipps 2006 3 03.08.2006 14:50
parst php datei nicht auf dem server PHP Tipps 2007 3 29.11.2005 21:04
Datei erstellen auf dem Server? PHP Tipps 2007 3 28.11.2005 17:18
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
ZIP Datei auf Server kopieren, entpacken und Inhalt in DB PHP-Fortgeschrittene 40 06.06.2005 23:33
Server lokal - php.ini Timeout einstellen PHP-Fortgeschrittene 7 28.12.2004 12:05
Datei nach Transfer löschen? (Server -> Client) PHP Tipps 2004-2 1 14.12.2004 20:33
datei vom server löschen PHP Tipps 2004-2 2 13.12.2004 10:50
existenz einer datei auf einem anderen server prüfen PHP Tipps 2004-2 2 19.11.2004 09:05
fehler beim öffnen einer php3 Datei auf dem Server !? PHP Tipps 2004 5 04.11.2004 19:25
Datei vom Server auslesen PHP Tipps 2004 3 21.10.2004 15:37
datei auf server verschieben? PHP Tipps 2004 4 18.08.2004 16:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php ftp datei erstellen, php ftp datei bearbeiten, php ftp datei ändern, php ftp datei schreiben, dateien auf dem server bearbeiten, dateien auf server bearbeiten, ftp datei bearbeiten php, möglichkeiten dateien auf einem server zu ändern, php ftp datei lesen, ftp zeitstempel ändern, ftp server bearbeiten, php datei auf server verändern, ftp dateien ändern, php ftp datei erstellen und schreiben, php ftp datei anlegen, datei verändern php ftp, php datei auf server ändern, auf ftp server datei löschen, zip vom entfernten server auslesen php, ftp seite ändern

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.