PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Verzeichnisinhalt auf fremdem Server



ExRevel
04.05.2005, 08:40
Guten Morgen...

so, meine Frage, ich habe einen Server auf dem der Webserver und die entsrechenden Webdateien liegen. Auf diesem Server läuft kein PHP und darf auch keins laufen, dennoch müssen mit einem PHP Script diese Seiten auf dem Webserver auf Schlagworte durchsucht werden, aber halt von einem anderen Server aus. Die Dateien zu beziehen ist eine Sache, doch Directorylistings von dem Webserver zu bekommen, damit das Script eine Dateiliste hat ist die andere, geht das sinnvoll mit PHP? Nur wenn das Directorylisting beim Apache aktiviert ist? Die sachen über FTP zu machen ist angeblich zu langsam... was sagt ihr?

Ich suche Lösungen für einen Freund der aufgrund eines Urlaubs etwas von der Aussenwelt abgeschnitten ist

ciao Exi

namespace
04.05.2005, 08:46
Wenn du es über FTP machen würdest, kannst du dich ganz normal unter Windows mit "Netzlaufwerk Verbinden" und der normalen Windows-Suche machen!

Übers HTTP kommst du nicht an die Namen der Dateien, soweit ich weiß. Somit müsstest du mit PHP auch wieder auf eine FTP-Lösung zurück greifen.

ExRevel
04.05.2005, 08:55
Naja wenn das Directorylisting für das entsprechende Verzeichnis am Apache aktiviert ist komme ich schon an die Namen, wenn nicht, dann habe ich ein Problem. Die FTP Lösung mit PHP ist zu langsam da es bei jedem Scriptaufruf (deswegen bringt mir Netzlaufwerk verbinden auch nix, da ich wie gesagt mit einem Script durchsuche von einem Linuxserver aus und nicht mit der Windowssuche *brrrr*) eine Verbindung mit Auth. hergestellt werden müsste. Naja... wahrscheinlich würde ich einfach 2 mal am Tag per FTP alle Dateien anpacken, indizieren und ich kann sie auch durchsuchen...

Wenn dennoch jemand Ideen hat ... nur zu...

Wolfgang
04.05.2005, 10:03
Hallo
Warum immer alles in php, das ist bei solchen nicht Browserspezifischen Aufgaben einfach zu langsam.
Versuch es doch mal mit perl.
Da gibt es so nette Module wie
Net::FTP
File::Listing;
Ein Beispielscript findest du hier:
http://perlmeister.com/perlpower/cdrom/scripts/ftpfetch.pl
Das lässt sich gut anpassen oder als Vorlage für ein eigenes script nutzen.
Natürlich kannst mit perl die Suche auch gleich selbst erledigen.

Gruß Wolfgang

ExRevel
04.05.2005, 10:35
Ich weiss ich weiss das Perl das alles kann... habe viele Jahre Perl geschrieben, aber wie ich bereits erwähnte will nicht ich das programmieren sondern ein Freund und dort ist PHP anscheinend die Anforderung. Aber ich kann nur nochmal sagen, da es während einer Benutzeranfrage Dateien auf dem anderen Server auswerten soll ist es zu langsam das über FTP zu machen... ich werde ihm einmal die tägliche Datenindizierung vorschlagen, da ist es dann egal ob mit PHP oder Perl.

Aber danke für die Anregungen, denn für die Suche ist Perl auf jeden Fall die bessere Alternative, doch wie ich schon sagte, ich weiss nicht in wiefern PHP benutzt werden "muss".

ciao Exi

proggi
04.05.2005, 14:20
Wenn du die nötigen Rechte für die Verzeichnisse hast (also chmod-Rechte), dann würde das über die Funktionen opendir() (http://php.net/opendir) und readdir() (http://php.net/readdir) funktionieren.

ExRevel
04.05.2005, 15:55
@proggi, Funktionieren opendir() und readdir() neuerdings über das webdav protokoll? :)

proggi
04.05.2005, 19:54
Ups sry. Das hab ich nicht bedacht. Nehme alles zurück. :)

YellowSPARC
29.05.2005, 21:07
Irgendwie klingt das schwer so, als wollte "dein Freund" die Daten vom entfernten Rechner per PHP klauen...

--
das "denunzieren.tk" Team auf heisser Spur! Bleiben Sie dran! ;)

ExRevel
30.05.2005, 11:04
@YellowSPARC
Wenn du das sagst, aber es haben vllt. nicht alle deine kriminelle Energie oder so wirre gedanken. Es geht schlicht weg um ein Suchmaschinen Projekt an der Uni und dort ist nun mal die Anforderung das Suchscript und Webserver auf verschiedenen Servern laufen, naja so wie ichs beschrieben habe.

Und verkneif dir solche Vermutungen oder Unterstellungen von nun an mal bitte, macht mich nämlich gewaltig stinkig so ein dahergelaber, wenn man zum Thema nix zu sagen hat, ok. Deine Idee hinkt sowieso vorn und hinten wenn du mal scharf drüber nachdenkst schickt man mit dem Script auch nur HTTP Header und was der Webserver rausrückt kann man auch anders rausfinden! Sorry bin heute richtig schlecht drauf aber so was hab ich auch schon länger nicht mehr gehört.

lordlamer
30.05.2005, 11:17
hi!

wie wär es mit einem wget auf die seite. dann werden die dateien alle lokal beim suchmaschienenserver gespeichert und du kannst sie dort mit nem phpscript durchsuchen! das wget kannst du dann ja zb per cron laufen lassen oder so.

is das ne idee?

mfg frank

ExRevel
30.05.2005, 12:16
Hey, das ist nicht so schlecht, auf jeden fall besser als per FTP, wo es nun schon eh nicht mehr on the fly geschehen soll, was ja auch quatsch wär :) Tja, manchmal kommt man auf die leichteste Lösung einfach nicht, wget ist ein super tool und so oft vergesse ich seine existenz :)

ciao Exi

YellowSPARC
30.05.2005, 19:03
@YellowSPARC
Wenn du das sagst, aber es haben vllt. nicht alle deine kriminelle Energie oder so wirre gedanken. Es geht schlicht weg um ein Suchmaschinen Projekt an der Uni und dort ist nun mal die Anforderung das Suchscript und Webserver auf verschiedenen Servern laufen, naja so wie ichs beschrieben habe.

Und verkneif dir solche Vermutungen oder Unterstellungen von nun an mal bitte, macht mich nämlich gewaltig stinkig so ein dahergelaber, wenn man zum Thema nix zu sagen hat, ok. Deine Idee hinkt sowieso vorn und hinten wenn du mal scharf drüber nachdenkst schickt man mit dem Script auch nur HTTP Header und was der Webserver rausrückt kann man auch anders rausfinden! Sorry bin heute richtig schlecht drauf aber so was hab ich auch schon länger nicht mehr gehört.

Mir vollkommen scheissegal, wie dein Tagestief aussieht, aber so brauchst du mir nicht zu kommen, Freundchen!
Wenn du schon zu doof bist, deine Hausaufgaben alleine zu machen, dann gib's von anfang an zu und werd' nicht hysterisch, wenn sie sonst keiner für Dich macht.
Oder pack' gleich und studier Sport und Bio auf Lehramt.

Unverschämt kann ich auch.

daniel.h
30.05.2005, 19:10
Ganz ruhig bleiben meine Freunde :)
Falls der Thread in Beleidigungen endet, sehe ich mich gezwungen ihn dicht zu machen. :(

proggi
30.05.2005, 22:20
Mir vollkommen scheissegal, wie dein Tagestief aussieht, aber so brauchst du mir nicht zu kommen, Freundchen!
Wenn du schon zu doof bist, deine Hausaufgaben alleine zu machen, dann gib's von anfang an zu und werd' nicht hysterisch, wenn sie sonst keiner für Dich macht.
Oder pack' gleich und studier Sport und Bio auf Lehramt.

Unverschämt kann ich auch.

Bitte informiere dich doch genauer über ExRevels Leben. ich kenne ihn noch aus anderen Foren und weiß, dass er ein sehr guter Perl-Programmierer ist. Er hat garantiert nciht die Absicht sich von irgendwem Hausaufgaben erledigen zu lassen. Ist nur gut gemeint.

Bye und gn8,
proggi

YellowSPARC
31.05.2005, 02:21
Na wenn das so ist, dann will ich mich mal lieber wieder hinsetzen und an meiner kleinen PHP-Klasse weiterstuempern, welche da einen Webservice implementiert, der eine RDF-Beschreibung des Inhalts eines Servers erzeugt - genau so, wie das W3C das in einem Draft zum semantischen Web haben will und den ich implementiere um automatische Newsfeeds von best. Seiten zu generieren. Hatte mich nur gefragt, bevor ich mich dazu aeussere, ob nicht wirklich jemand anderem in den Newsfeed kiebitzen will.
Werde kuenftig aller Beteiligten curriculi vitae studieren, ob nicht vielleicht ein Choleriker von Larry Walls Gnaden dabei ist.

ExRevel
31.05.2005, 15:10
@YellowSparc, joa, hatte nicht vor dich zu beleidigen, aber anstatt nun beleidigt zu sein und zu erzählen was du so alles tolles machst hättest du auch gleich eine gescheite und weniger provokative antwort geben können. Bevor ich hier jemandem etwas unterstelle will ich ihn etwas länger kennen, dann weiss ich ob ich mit meiner vermutung richtig liegen könnte und wenn du dann hier reinschneist und mir sowas an den kopf wirfst werd ich etwas ungehalten. Eine schöne antwort von dir wär doch gewesen: "Tja ich haette da eine idee, aber sag mal was hast du denn vor, will da einer was stiebitzen?"

Das wär nett gewesen mit etwas witz und du hättest noch nicht deine tiefen PHP geheimnisse verraten, neugirig und keck wie ich bin hätte ich dir lieb die situation noch einmal verdeutlicht, die du auch schon aus dem ersten meiner beiträge herauslesen konntest und wenn du etwas mehr in dem forum und länger unterwegs wärst auch wüsstest das ich A) es nicht nötig hab irgendwo daten zu klauen und ich B) nicht studiere und also auch gar nicht auf lehramt wechseln kann. So was aber auch. Das ist nämlich die gleiche frechheit, ist man in deinem alter das ich deiner signatur entnehme nicht schon alt genug über so kleinen spinnenden cholerikern zu stehen, wie ich einer bin? :)

Also sind es nicht meine Hausaufgaben! Ich klaue keine Daten, ich habe einfach nur um anregungen gebeten für einen guten freund der echt in spanien in der pampa saß!

Danke an proggi, gibt also noch vernünftige leute im board.

@YellowSparc, also nix für ungut, aber du bist nicht der einzige held und gute mensch draussen in der weiten welt! Aber was meinst du was nun die Lehramtsstudenten dies hier gibt von dir halten und die die vllt. schon lehramt studiert haben. Dinge die man denkt und dinge die man sagt sollte man irgendwann zu unterscheiden wissen, das bringt einen im leben oft weiter.

MrFenix
31.05.2005, 20:48
Vielleicht könntest du die Apache Directorylistings anstellen und die links zu den einzelnen dateien mit preg_match aus dem Source von der Indexseite auslesen. Ist zwar nicht unbedingt die feine englische Art, aber sicher nicht sehr aufwändig und müsste auch recht effektiv sein.
So nach Schema:
$a = lese_seite_aus("http://server/images/");
$b = finde("*.jpg", $a);
Edit 1:
Um ein bisschen Tuning vorzunehmen würde ich noch intensive Lektüre (und rumprobieren) hiervon empfehlen:
mod_autoindex (http://httpd.apache.org/docs-2.0/mod/mod_autoindex.html)
Edit 2:
Heh das erste da mit dem GET Formular sieht sehr interessant aus...
schade, dass ich grade keine Zeit dazu habe mir das genauer anzuschaun.

YellowSPARC
03.06.2005, 23:22
</BELEIDIGT>
:)
Also ein paar Fragen sind mir gleich ganz am Anfang aufgegangen:

- Wenn auf dem remotehost kein PHP laufen kann, was dann? cron/bash scheinen ja erlaubt zu sein: Damit, mit ls und test -d kann man mittels ein paar (Perl?) String-Concatenations schon genug XML zusammensetzen und an einer well-known URI ablegen, um es per PHP abholen und als Webservice bezeichnen zu koennen.

- Welche Version PHP läuft denn auf dem "Suchhost", PHP4, oder schon 5?

- Mit den HEADER und README files auf dem remote host koennte man evtl eine XML-DTD erzeugen, zumindest aber die Indizierung deutlich (und mit bekanntem Inhalt) vom Server-Listing abheben. ein <LISTING> Tag in der Datei HEADER und </LISTING> im README wären evtl ein Ansatz.

-Im Falle einer DTD könnte man CDATA benutzen und die empfangene XML-Datei dann "zuhause" mit PHPs XML-Parser aufbereiten.

-Im Falle anlegbarer HEADER- und README-Files kann man für einen einfachen "Webservice" sogar einfach den Kopf für ein <rdf:ITEM> in den Header schreiben, dann das <description> Tag offen stehen lassen, Apaches Server-Index "hineinfliessen" lassen und im README </description> anfuegen. Ein komplettes RDF-File mit so einer Sitemap liegt z.B. unter http://www.ax11.de/feed.rss

Es bleiben aber die Fragen:
-sind die Directories an sich bekannt;
-inwieweit kann man httpd.conf bearbeiten;
-welche Apache-Module sind vorhanden/installierbar

Es gibt AFAIK sogar ein fertiges Apache/Jakarta Modul, das RDF-Beschreibungen von Directories anfertigt.
Eine PHP-Klassenbibliothek, die ein solches Framework (groesstenteils) bietet, werde ich unter http://priff.sf.net hochladen, sobald die Sourceforge-Schergen ihr ok abgegeben haben, wenn's denn was nützt, kann ich die Quellen einstweilen auch anderswo ablegen.

YellowSPARC
03.06.2005, 23:30
Ach nochwas. Eine ganz hinterhältige Lösung:
Google haben heute ihren Siteindex-Dienst herausgebracht, unter https://www.google.com/webmasters/sitemaps/login
findet sich ein Python-Script, das XML-Indices eines Servers erstellt.
Das sollte eigentlich funktionieren - aber es ist halt ein Plagiat...