Diagramm per FTP übertragen

Hallo zusammen,

ich möchte gerne von meinem Homeserver ein Diagramm (ca 40 kb) per FTP auf einen Internetserver kopieren. Ich habe hier aus dem Forum ein Script das nur zum Teil funktioniert, es wird lediglich ca die hälfte übertragen und dann erfolgt der abbruch wegen „Max execution Time 150 seconds“. Normalerweise sollte es aber nur sekunden brauchen für diese grösse, kann mir jemand einen Tip geben woran das liegt.

// Diese Variablen bitte ändern
$ftp_server = "xxx.xxx.de";
$benutzername = "xxxxxxxxx";
$passwort = "xxxxxxxxx";

// Die Verbindung herstellen
$connection_id = ftp_connect($ftp_server);

// Mit Benutzername und Kennwort anmelden
$login_result = ftp_login($connection_id, $benutzername, $passwort);

// überprüfen ob alles gutgegangen ist
if ((!$connection_id) || (!$login_result)) {
  echo "<H1>Ftp-Verbindung nicht hergestellt!<H1>";
  echo "<P>Verbindung mit ftp_server als Benutzer $benutzername nicht möglich!</P>";
  die;
} else {
  echo "<P>Verbunden mit ftp_server als Benutzer $benutzername</P>";
}

// Die aus dem Forumular übergebenen Daten abfragen
//$zieldatei = $_POST['zieldatei'];
//$lokale_datei = $_POST['lokale_datei'];

$zieldatei = "Whzges24h_9.png";
$lokale_datei = "C:/Programme/IP-Symcon/webfront/DUGTool/Diagramme/Wohnzimmer Daten ges. 24h_9.png";


// Hochladen der datei
$upload = ftp_put($connection_id, $zieldatei, $lokale_datei, FTP_BINARY);

// Upload-Status überprüfen
if (!$upload) {
  echo "<P>Ftp upload war fehlerhaft!</P>";
} else {
  echo "<P>Datei $lokale_datei auf $ftp_server als $zieldatei geschrieben</P>";
}

// Schließen der Verbindung
ftp_quit($connection_id);

Das einzige was ich geändert habe war von FTP_ASCII nach FTP_BINARY, vieleicht ist das ja das Problem?

Gruß Michael

Hallo zusammen,

keiner eine Idee ? :confused: :confused:

Gruß Michael

Etwa alle in Urlaub hier ?? :confused: :confused:

Gruß Michael

Sieht wunderbar aus, anders mache ich das auch nicht. Eventuell ist der Server wirklich langsam und Du solltest set_time_limit(0) benutzen.

Hallo Horst,

erst mal DANKE für die Antwort.

Also der Server ist Arcor, habe es mit Total Commander testweise versucht und klappt ruck zuck deswegen wundere ich mich warum das über IPS so langsam ist.

Aber ist für mich schon hilfreich zu wissen das das Script ok ist.

Danke

Gruß Michael

PS: Werde „set_time_limit(0)“ mal ausprobieren.

Hallo, ich habe das gleiche Problem. Ich habe obenstehendes Script (aber auch ein anderes Script) ausprobiert und bekomme folgende Fehlermeldung:

Verbunden mit ftp_server als Benutzer xxxxx
Warning: ftp_put() [function.ftp-put]: Opening BINARY mode data connection for bbmsngkry_day.png in C:\IP-Symcon\scripts\21911.ips.php on line 31
Ftp upload war fehlerhaft!
Fatal error: Maximum execution time of 150 seconds exceeded in C:\IP-Symcon\scripts\21911.ips.php on line 46

Tatsächlich ist die Datei aber binnen Sekunden korrekt hochgeladen worden. Sie lag trotz Fehlermeldung tatsächlich sofort auf dem Server vor. Meine Vermutung ist, daß keine korrekte bzw, erwartete Rückmeldung vom Server (hier 1&1) erfolgt und IPS darauf nur mit Timeout reagiert.

Ich habe auch den Tipp mit „set_time_limit(0)“ versucht, habe aber die IPS-Console damit zum Absturz gebracht (da das Script nun tatsächlich nicht zum Abschluß kommt).

Ich bin nun etwas ratlos, kann jemand weiterhelfen?

ich hab nach dem ftpput ein ips_sleep(500) eingefügt, danach ging es fehlerfrei (jedenfalls bei mir :smiley: )

Schon mal mit passiv-Mode probiert.

// Schalte passiven Modus ein
ftp_pasv($connection_id, true);

Hinter Login einfügen.

Hallo und vielen Dank für Eure Mühe.

Der Befehl

ftp_pasv($connection_id, true);

hat zum Erfolg geführt, der Befehl

ips_sleep(500)

leider nicht.

Hier das erfolgreiche Script:

<?
/*
Script zum Hochladen einer Datei auf einen Server z.B. Hompage per FTP
*/

$ftp_server 	  = "xxxxxxxx.de";		// Diese Variablen bitte ändern
$benutzername 	= "xxxxxxxx";
$passwort 		= "xxxxxxxx";

$connection_id = ftp_connect($ftp_server);                        		// Die Verbindung herstellen
$login_result = ftp_login($connection_id, $benutzername, $passwort);      // Mit Benutzername und Kennwort anmelden

if  ($login_result)                             						  // überprüfen ob alles gutgegangen ist
  		{echo "<H1>Verbindung mit FTP-Server nicht möglich!<H1>"; 	  // ftp_login übergibt true oder false
  		 exit();}
else 	 {echo "<P>Verbunden mit FTP-Server</P>";}
  
ftp_pasv($connection_id, true);										   // Schalte passiven Modus ein

$zieldatei 	   = "bbmsngkry_day.png";
$lokale_datei 	= "C:/IP-Symcon/web_data/rrd/data/bbmsngkry_day.png";   // Aussentemperatur
$upload = ftp_put($connection_id, $zieldatei, $lokale_datei, FTP_BINARY); // Hochladen der Datei


if (!$upload)                                                             // Upload-Status überprüfen
  		{echo "<P>Ftp_Upload war fehlerhaft!</P>";} 			        // ftp_put übergibt ein
else 	 {echo "<P>Datei > $zieldatei < wurde auf Server geschrieben</P>";}

ftp_quit($connection_id);												 // Schließen der Verbindung

?>