SELFPHP: Version 5.8.1 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche


International PHP Conference


WebTech Conference



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



PHP Summit


Software Architecture Summit


:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 
HTML5 Days


JavaScript Days


:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 


Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.02.2003, 11:30:14
fly fly ist offline
Anfänger
 
Registriert seit: Feb 2003
Beiträge: 9
fly befindet sich auf einem aufstrebenden Ast
datei (text/xml) von einem anderen server laden

hi ich stehe vor vorlgendem problem:

ich habe einen xml parser, der funkt, nur arbeitet er nur mit lokalen datein.

das ist mir aus gründen der geschwindigkeit auch ganz lieb, nur ist die xml datei immer etwas älter als das orginal, und ich muss die von hand kopieren.

ich möchte nun automatiesieren, das gecheckt wird wie alt die datei ist (krieg ich hin) und dann älter als sagen wir 6h neu auf den webserver (von dem anderen) geladen wird (das krieg ich nicht hin).

ich brauch also nur ein paar code zeilen, die eine xml (oder eine beliebige datei) von einer URL laden und dann lokal speichert..

$dl = "url";
$lokal = "test.xml";

mehr vars bräuchte ich nicht. kann mir da einer helfen, ich hab grad 90min damit verbracht eswas fertiges zu finden, das ich nur anpasse, aber nix gefunden!

danke
Mit Zitat antworten
  #2  
Alt 20.02.2003, 11:38:31
Greg G Greg G ist offline
Anfänger
 
Registriert seit: Feb 2003
Ort: Hessen
Beiträge: 116
Greg G befindet sich auf einem aufstrebenden Ast
Je nachdem, wie dein PHP konfiguriert ist, kann es direkt mit fopen("http://.....", "r");
auch URLS statt lokaler Dateien öffnen.

Etwas umfangreichere Lösungen gibt es mit curl.

http://www.selfphp.com/funktionsrefe...onen/fopen.php
Mit Zitat antworten
  #3  
Alt 20.02.2003, 22:04:38
fly fly ist offline
Anfänger
 
Registriert seit: Feb 2003
Beiträge: 9
fly befindet sich auf einem aufstrebenden Ast
also ich hab einweig rumprobiert und folgendes funkt


function load($getfile, $putfile){
$data = implode("n",file($getfile));

if($data){
$fp = fopen($putfile,"w");
fwrite($fp, "$data");
fclose($fp);
}
}

//und dann halt aufrufen

load("http://blabla...","/writefile.txt");

das prob ist das geht zwar für meinen zweck (xml datei holen), aber wie ist das mit allgemeinen (binäre-datein).

ne allgemeinere lösung wäre mir lieber, mir gehts also nicht ums öffnen (das macht der parser später) sondern nur ums downloaden vom anderen rechner.

hat jemand für den reihen download ne lösung?
Mit Zitat antworten
  #4  
Alt 20.02.2003, 22:14:05
Greg G Greg G ist offline
Anfänger
 
Registriert seit: Feb 2003
Ort: Hessen
Beiträge: 116
Greg G befindet sich auf einem aufstrebenden Ast
Schau mal in der Beschreibung zu fread:

http://www.selfphp.com/funktionsrefe...onen/fread.php

Zitat:
Mit fread() kann man Binärdaten aus einer Datei (fp) lesen. Der zweite Parameter
für die Länge (length) bestimmt, wie viel der Datei gelesen werden soll (max. bis
zum Dateiende).

Im Beispiel:
$fp = fopen ($zaehler_anmelden, "r");
$str = fread ($fp, filesize ($zaehler_anmelden));

Und bei fopen:
http://www.selfphp.com/funktionsrefe...onen/fopen.php

Zitat:
Für die Bearbeitung von Binärdateien können Sie an jede dieser
Modusdefinitionen ein "b" anhängen.

Also beim Beispiel dann:
$fp = fopen ($zaehler_anmelden, "rb");


Sollte eigentlich auch gehen, wenn du es mit file geschafft hast.

GG
Mit Zitat antworten
  #5  
Alt 21.02.2003, 00:26:25
fly fly ist offline
Anfänger
 
Registriert seit: Feb 2003
Beiträge: 9
fly befindet sich auf einem aufstrebenden Ast
sorry irgendwie funkt das nicht:

Code:
$getfile = "http://www.google.de/index.html";
$putfile = "output.txt";

$tmpfile = fopen($getfile, "r"); 

$tmpdata = fread($tmpfile, filesize($getfile));
fwrite($putfile,$tmpdata);
fclose($putfile);
fclose($getfile);
krieg bei fopen nen fehler:

Warning: stat failed for http://www.google.de/index.html (errno=2 - No such file or directory) in testdl.php

ich entwickle auf ner windows kiste und der server ist linux.

is sowas wirklich so kompleziert, oder stell ich mich nur doof an?
Mit Zitat antworten
  #6  
Alt 21.02.2003, 08:09:58
Greg G Greg G ist offline
Anfänger
 
Registriert seit: Feb 2003
Ort: Hessen
Beiträge: 116
Greg G befindet sich auf einem aufstrebenden Ast
Morgen

Das könnte an den PHP-Einstellungen liegen. Hast du es auf dem Linux-Server schon mal ausprobiert? Du kannst dir einfach mal die geladene google.de/index.html ausgeben lassen.
Das war der erste Test, den ich mal gemacht hatte, und es ging (aber auf dem Server, unter Windows hatte ich es gar nicht probiert, glaub ich).


http://www.php.net/manual/en/function.fopen.php

Cite:
If PHP has decided that filename specifies a registered protocol, and that protocol is registered as a network URL, PHP will check to make sure that allow_url_fopen is enabled. If it is switched off, PHP will emit a warning and the fopen call will fail.
/Cite

Und dann für die Einstellungen der php.ini:

http://www.php.net/manual/en/ref.fil...llow-url-fopen
Cite:
Runtime Configuration

The behaviour of these functions is affected by settings in php.ini.

Table 1. Filesystem and Streams Configuration Options
Name Default Changeable
allow_url_fopen "1" PHP_INI_ALL
user_agent NULL PHP_INI_ALL
default_socket_timeout "60" PHP_INI_ALL
from NULL ??
auto_detect_line_endings "Off" PHP_INI_ALL

Here is a short explanation of the configuration directives.

allow_url_fopen boolean

This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers.

Note: This option was introduced immediately after the release of version 4.0.3. For versions up to and including 4.0.3 you can only disable this feature at compile time by using the configuration switch --disable-url-fopen-wrapper.
/Cite


GG
Mit Zitat antworten
  #7  
Alt 24.02.2003, 14:16:43
fly fly ist offline
Anfänger
 
Registriert seit: Feb 2003
Beiträge: 9
fly befindet sich auf einem aufstrebenden Ast
hm, also ich versuche es jetzt erstmal nur auf der linux kiste:

da krieg ich fehler meldungen, der schreibende zugriff aufs dateisystem ist unter sagt.

in php.ini ist der eintrag open_basedir auskommentiert, in meinem schlauen php buch steht, man könnte es in die apache http.conf eintragen, mit hilfe der php_admin_value variable.

ok das hab ich getan:

Code:
<VirtualHost xxx.xxx.xxx.xxx>
ServerName www.xxxxxxxxxxx.de
ServerPath /home/cu
DocumentRoot /home/cu/htdocs
ScriptAlias /cgi-bin/ /home/cu/cgi-bin/
ErrorLog /home/cu/logs/error.log
LogLevel crit
TransferLog /home/cu/logs/access.log
php_admin_value open_basedir /home/cu/htdocs/daoc/agaa/
</VirtualHost>
fehler krieg ich trotzdem:

Code:
Warning: fopen("festver", "w") - Permission denied in /home/cu/htdocs/daoc/agaa/testdl2.php on line 5
das phpscript is recht simpel -zum testen-

Code:
$fp = fopen("festver","w");
fwrite($fp, "test999");
fclose($fp);
Mit Zitat antworten
  #8  
Alt 24.02.2003, 14:25:32
fly fly ist offline
Anfänger
 
Registriert seit: Feb 2003
Beiträge: 9
fly befindet sich auf einem aufstrebenden Ast
ah also der eintrag hat schon wirkung:

Warning: open_basedir restriction in effect. File is in wrong directory in Unknown on line 0

nur nicht die die ich wollte!

ich vermute nen "fehler" in der apache http.conf mal sehn ob ich was finde!
Mit Zitat antworten
  #9  
Alt 24.02.2003, 14:27:46
Ben20
Guest
 
Beiträge: n/a
Blöde Frage, aber hat die Datei in die Du schreiben willst die richtigen Rechte? Sprich darf der User den Apache verwendet bzw. die Gruppe überhaupt die Datei bearbeiten?
Mit Zitat antworten
  #10  
Alt 24.02.2003, 14:48:48
fly fly ist offline
Anfänger
 
Registriert seit: Feb 2003
Beiträge: 9
fly befindet sich auf einem aufstrebenden Ast
;-)))) hehe

jo daran hatte ich auch schon gedacht, gut das ich das zuerst versucht habe und nicht erst die ganze http.conf durchgesehn habe.

daran lags auf jedenfall, das ich nicht öffnen (rw) konnte.

problem das bleibt (oder jetzt neu ist): er speichert jetzt natürlich als user: apache gruppe: apache ab, wie kann ich das unter dem user speichern. sollte das nicht gehn, ist auch nicht schlimm. aber vieleicht weiss ja jemand obs da nen weg gibt.....
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:38:33 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.


© 2001-2014 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt