exec('wget..) xml, filenamen ändern
Permafr0st
- php
0 ChrisB0 Permafr0st0 ChrisB0 ChrisB0 Permafr0st0 fastix®
hallo
wir haben eine HTTP Resource, die XML ausgibt. die hole ich mir mit
$wg = exec('wget -q -c -b $resource',$out);
Das abholen klappt wurderbar, es wird das XML in einem File gespeichert, welches aber den Namen der aufrufenden Resource hat, sprich den Querystring. Auch die endung .xml fehlt.
Nun will ich das XML mit dem "PEAR XML Unserializer" zerlegen und verwursten. Auch das klappt wuderbar, solange man ein XML File hat mit einem diskreten Filename, zB. file.xml. hab ich aber nicht, was mache ich da?
Da sich der Name der XML Datei immer ändert, komm ich wohl kaum drum rum, das DIR einzulesen, schauen welche Files da liegen und den Filename dort herauszusaugen? - dann diesen Filename dem Unserializer übergeben?
Mein Code funktioniert, ich habs mit diskreten Files getestet.
Links
http://de2.php.net/manual/de/function.exec.php
das "Swiss Army Knife" für XML
http://pear.php.net/manual/en/package.xml.xml-serializer.xml-unserializer-summary.php
Danke Gruß
Hi,
wir haben eine HTTP Resource, die XML ausgibt. die hole ich mir mit
$wg = exec('wget -q -c -b $resource',$out);
Das abholen klappt wurderbar, es wird das XML in einem File gespeichert, welches aber den Namen der aufrufenden Resource hat, sprich den Querystring. Auch die endung .xml fehlt.
Nun will ich das XML mit dem "PEAR XML Unserializer" zerlegen und verwursten. Auch das klappt wuderbar, solange man ein XML File hat mit einem diskreten Filename, zB. file.xml. hab ich aber nicht, was mache ich da?
Die Parameter von wget anschauen, um den Namen, unter dem abgespeichert wird, vorzugeben ...?
MfG ChrisB
Die Parameter von wget anschauen, um den Namen, unter dem abgespeichert wird, vorzugeben ...?
MfG ChrisB
erstmal danke. habe dazu hier
http://wiki.ubuntuusers.de/wget
erstmal nix gefunden. ok ich schau dann nochmal nach "man wget"
bzw. "wget --help"
. Naja ist wohl nicht der typische Anwendungsfall des wget..
Hi,
Die Parameter von wget anschauen, um den Namen, unter dem abgespeichert wird, vorzugeben ...?
erstmal nix gefunden. ok ich schau dann nochmal nach
"man wget"
bzw."wget --help"
.
-O file
oder
--output-document=file
MfG ChrisB
Hi,
-O file
oder
--output-document=file
Hm, nee, moment - laut Beschreibung sind die nicht exakt dafür da, sondern machen noch mehr.
MfG ChrisB
-O file
oder
--output-document=file
Hm, nee, moment - laut Beschreibung sind die nicht exakt dafür da, sondern machen noch mehr.MfG ChrisB
http://wiki.ubuntuusers.de/wget#Tarballs-automatisch-entpacken
=>
"..Mit -O - wird wget angewiesen die Datei direkt auf die Standardausgabe STDOUT zu schreiben...
Tach auch.
"..Mit -O - wird wget angewiesen die Datei direkt auf die Standardausgabe STDOUT zu schreiben...
Weil für Parameter, bei denen Dateinamen angegeben werden, das '-' traditionellerweise für STDOUT steht. Aber vielleicht ist es sowieso eher das, was du anstreben solltest.
Einer meiner Grundsätze lautet, dass ich auf das Anlegen von temporären Dateien möglichst verzichte, um mir nicht weitergehende Fehlerquellen einzuhandeln (da spricht auch die Faulheit, da ich dann eben den Fehlerbehandlungscode dazu nicht schreiben muss).
mit "wget -O -" wird die Datei auf STDOUT gelesen, mit
@file =
wget $ressource -O -;
(` = backticks) hast du sie direkt in @file. Dein XML Bibliothek wird dir sicherlich die Möglichkeit anbieten, das XML aus einem String/Array heraus zu parsen, oder?
Bis die Tage,
Matti
Tach auch.
du sie direkt in @file. Dein XML Bibliothek wird dir sicherlich die Möglichkeit anbieten, das XML aus einem String/Array heraus zu parsen, oder?
Bis die Tage,
Matti
kann sein. die Doku schweigt sich darüber eher aus. ein anderer im PHP Forum meinte aber, ja das ginge auch.
Naja ich habs jetzt hinbekommen 'wget -O file.xml resource'. Habe dann noch einen Ordner erstellt und dem einen 'chmod o+rwx' gegeben, schon durfte der Apache User www-data da reinschreiben...
gibt halt viele Wege nach Rom und einer ist der eleganteste :-)
Hi.
du sie direkt in @file. Dein XML Bibliothek wird dir sicherlich die Möglichkeit anbieten, das XML aus einem String/Array heraus zu parsen, oder?
kann sein. die Doku schweigt sich darüber eher aus. ein anderer im PHP Forum meinte aber, ja das ginge auch.
Naja ich habs jetzt hinbekommen 'wget -O file.xml resource'. Habe dann noch einen Ordner erstellt und dem einen 'chmod o+rwx' gegeben, schon durfte der Apache User www-data da reinschreiben...
gibt halt viele Wege nach Rom und einer ist der eleganteste :-)
http://pear.php.net/manual/en/package.xml.xml-serializer.xml-unserializer.unserialize.php (wenn ich das deinem erstem Posting richtig entnehme) schreibt eigentlich sehr deutlich, dass du ihm als ersten Parameter statt einem Dateinamen auch direkt den Inhalt übergeben kannst.
Also etwa so:
$unserializer->unserialize(join('', `wget $ressource -O -`));
Bis die Tage,
Matti
Moin!
Hi,
-O file
oder
--output-document=fileHm, nee, moment - laut Beschreibung sind die nicht exakt dafür da, sondern machen noch mehr.
Doch doch. Die sind genau dafür da:
$file="/pfad/testfile.xml";
$wg = exec("wget -O $file -q -c -b $resource",$out);
Er muss noch die Quotas ändern. in einfachen Quotas übergibt er:
wget -O /pfad/testfile.xml -q -c -b $resource
an die Shell und dort ist $ressource natürlich leer.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Hi,
-O file
oder
--output-document=fileHm, nee, moment - laut Beschreibung sind die nicht exakt dafür da, sondern machen noch mehr.
Doch doch. Die sind genau dafür da:
Liest sich aber anders:
“Use of -O is *not* intended to mean simply "use the name file instead of the one in the URL;" rather, it is analogous to shell redirection: wget -O file http://foo is intended to work like wget -O - http://foo > file; file will be truncated immediately, and *all* downloaded content will be written there.”
Kann man vielleicht im vorliegenden Fall trotzdem benutzen; man sollte sich aber über die eigentliche Bedeutung/Aufgabe im klaren bleiben.
MfG ChrisB
Moin!
wget -O testfile http://example.org/
holt den Stuff von example.org und schreibt ihn in die Datei testfile im aktuellen Verzeichnis.
http://blog.fastix.de/post/897736561/ueber-den-richtigen-umgang-mit-wget
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix