Zugriff auf entfernte Webseiten
Hallo NG,
ich bastele gerade ein PHP-Batch-Script, wo ich von meinem Internet-Server=
entfernte Webseiten hole und verarbeite. Dummerweise hat PHP ein Timeout vo=
n
30 Sekunden, danach wird der Prozess gekillt.
Gibt es evtl. in Perl, aber _nur_ in der Standarddistribution (die bei jede=
m
Internet-Provider installiert ist) die Möglichkeit, auf entfernte Webseit=
en
zuzugreifen? IMHO ist das nur mit dem LWP-Modul möglich und das ist
dummerweise nicht in der Standarddistribution...:-((
Gruss, Helmut
Re: Zugriff auf entfernte Webseiten
--QnBU6tTI9sljzm9u
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On 2005-10-10 11:48:50 +0000, Helmut Blass wrote:
> Gibt es evtl. in Perl, aber _nur_ in der Standarddistribution (die bei je=
dem
> Internet-Provider installiert ist) die Möglichkeit, auf entfernte Webse=
iten
> zuzugreifen? IMHO ist das nur mit dem LWP-Modul möglich und das ist
> dummerweise nicht in der Standarddistribution...:-((
socket, connect, print, <>.
Ok, samma großzügig: IO::Socket::INET
hp
--
This is not a signature
--QnBU6tTI9sljzm9u
Content-Type: application/pgp-signature
Content-Disposition: inline
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
iD8DBQFDSlyLfZ+RkG8quy0RAtj6AKC+wzNMtRdV4W3lgpJSy/1LtYyY2ACg h1db
XL4m2OWOFedkKFWl6fkG4Co=
=6LEd
-----END PGP SIGNATURE-----
--QnBU6tTI9sljzm9u--
Re: Zugriff auf entfernte Webseiten
In article <20051010122028.GI8161 [at] yoyo.hjp.at>, "Peter J. Holzer" <hjp-usen=
et2 [at] hjp.at> wrote:
>socket, connect, print, <>.
>
>Ok, samma gro=3DDFz=3DFCgig: IO::Socket::INET
Danke für den Tip. In so tiefen Gefilden hab ich noch nicht gefischt.
Da muss ich mich mal ein bisschen schlau machen..;-)
cu, Helmut
Re: Zugriff auf entfernte Webseiten
* Helmut Blass [2005-10-10]:
Hallo Helmut,
> ich bastele gerade ein PHP-Batch-Script, wo ich von meinem
> Internet-Server entfernte Webseiten hole und verarbeite. Dummerweise
> hat PHP ein Timeout von 30 Sekunden, danach wird der Prozess gekillt.
bist du sicher, dass das der Timeout von PHP eingerichtet wird und nicht
etwa vom Webserver (oder wie/wer startet dein Skript)? Im letzteren Fall
würde dir auch ein Umweg über Perl nicht wirklich helfen.
Einige Signale soll man übrigens auch abfangen, bzw. ignorieren können,
habe ich irgendwann mal wo gehört.
> Gibt es evtl. in Perl, aber _nur_ in der Standarddistribution (die bei
> jedem Internet-Provider installiert ist) die Möglichkeit, auf
> entfernte Webseiten zuzugreifen? IMHO ist das nur mit dem LWP-Modul
> möglich und das ist dummerweise nicht in der
> Standarddistribution...:-((
Es ist aber in reinem Perl geschrieben. Siehe auch unzählige Beiträge im
Archiv zum dem Thema.
Gruss
Christian
--
So richtig nett ist's nur im Bett!
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Re: Zugriff auf entfernte Webseiten
Helmut Blass wrote:
> In article <20051010T141428 [at] lackas.net>, Christian Lackas <delta [at] lackas.net> wrote:
>
>>* Helmut Blass [2005-10-10]:
>>
>>Hallo Helmut,
>>
>>
>>>ich bastele gerade ein PHP-Batch-Script, wo ich von meinem
>>>Internet-Server entfernte Webseiten hole und verarbeite. Dummerweise
>>>hat PHP ein Timeout von 30 Sekunden, danach wird der Prozess gekillt.
>>
>>bist du sicher, dass das der Timeout von PHP eingerichtet wird
>
>
> ja ! 30 sec. ist der Wert für 'max_execution_time'
> Standard bei PHP.
>
>
>>>Gibt es evtl. in Perl, aber _nur_ in der Standarddistribution (die bei
>>>jedem Internet-Provider installiert ist) die Möglichkeit, auf
>>>entfernte Webseiten zuzugreifen? IMHO ist das nur mit dem LWP-Modul
>>>möglich und das ist dummerweise nicht in der
>>>Standarddistribution...:-((
>>
>>Es ist aber in reinem Perl geschrieben. Siehe auch unzählige Beiträge im
>>Archiv zum dem Thema.
>
>
> Was nützt mir das, wenn mein Provider das Ding nicht installiert?
>
> Gruss, Helmut
>
--
$_='';s%%`^.*`s;.*;uhtnmo;;a>lha~a>inu~a>fmk~a>rou~a>duM~a>b tl~s;&&&&&&;
!d1!l2!b3!i4!f5!r6q(?);e;Z``}a>&&&`sub# "1#{#"_=shift#;s^"2^"3#^;``;~`
return #"_#}``^!&&`"1(#""2)#\.`Z%x;s~Z~print~g;s/#/\\/g;
s/`(.)(.+?)`(.+?)`/s$1$2$1$3$1g\;/gsx;s;&;(.);g;y^"^$^;print ;
Re: Zugriff auf entfernte Webseiten
Helmut Blass wrote:
>
>
> Was nützt mir das, wenn mein Provider das Ding nicht installiert?
>
> Gruss, Helmut
>
Du kopierst das Modul einfach mit in den Ordner rein, wo das Skript liegt.
Sowas wie cgi-bin/LWP/Simple.pm und die ganzen anderen Dateien.
vielleicht musst du noch . zum LIB-Path mit hinzufügen.
use lib qw/./; #Oder so...
--
$_='';s%%`^.*`s;.*;uhtnmo;;a>lha~a>inu~a>fmk~a>rou~a>duM~a>b tl~s;&&&&&&;
!d1!l2!b3!i4!f5!r6q(?);e;Z``}a>&&&`sub# "1#{#"_=shift#;s^"2^"3#^;``;~`
return #"_#}``^!&&`"1(#""2)#\.`Z%x;s~Z~print~g;s/#/\\/g;
s/`(.)(.+?)`(.+?)`/s$1$2$1$3$1g\;/gsx;s;&;(.);g;y^"^$^;print ;
Re: Zugriff auf entfernte Webseiten
In article <20051010122028.GI8161 [at] yoyo.hjp.at>, "Peter J. Holzer" <hjp-usen=
et2 [at] hjp.at> wrote:
>socket, connect, print, <>.
>
>Ok, samma gro=3DDFz=3DFCgig: IO::Socket::INET
hab jetzt mal ein bisserl damit rumgespielt. Für die Initialisierung brau=
cht
man die IP-Adresse. Kriegt man anscheinend irgendwie mit gethostbyname.
Wenn ich da ne URL angebe, kommt nix gescheites bei raus und nur wenn ich d=
en
richtigen Servernamen angebe, gibt er mir den auch wieder zurück. Toll!
Für was braucht man das Ding dann eigentlich, wenn ich mir den Hostnamen =
aus
der URL selber zusammenfitzeln muss?
Gruss, Helmut
Re: Zugriff auf entfernte Webseiten
* Helmut Blass [2005-10-10]:
Hallo Helmut,
> > > ich bastele gerade ein PHP-Batch-Script, wo ich von meinem
> > > Internet-Server entfernte Webseiten hole und verarbeite.
> > > Dummerweise hat PHP ein Timeout von 30 Sekunden, danach wird der
> > > Prozess gekillt.
>>bist du sicher, dass das der Timeout von PHP eingerichtet wird
> ja ! 30 sec. ist der Wert für 'max_execution_time' Standard bei PHP.
dann hilft vielleicht ein Aufruf von set_time_limit(). Wenn der
Safe-Modus an ist, dann möchte dein Provider offenbar nicht, dass du
Skript länger als 30 Sekunden laufen lässt.
Wie auch immer, du kannst immer noch selbst einen zweiten PHP-Prozess
ausrufen und ihm in seiner php.ini sagen, dass der Safe-Modus nicht an
sein soll oder was ein geeigneterer Default für max_execution_time ist.
Perl statt PHP zu verwenden bringt dir keinerlei Vorteile. Wenn dein
Provider aber wirklich nicht möchte, dass deine Skripte länger als 30
Sekunden laufen, dann hat er Möglichkeiten dir das sehr wirksam zu
unterbinden.
> > Es ist aber in reinem Perl geschrieben. Siehe auch unzählige
> > Beiträge im Archiv zum dem Thema.
> Was nützt mir das, wenn mein Provider das Ding nicht installiert?
Wie willst du denn dein selbstgeschriebenes Perl-Skript auf das System
bekommen? Was ist (aus Sicht des Systems) der Unterschied zwischen einer
Textdatei mit Perlcode, die du selbst geschrieben hast und Textdateien
mit Perlcode, die du nicht selbst geschrieben hast. Sind die Bits da
anders?
Gruss
Christian
--
Die Japaner erobern den Weltmarkt mit unlauterem Wettbewerb: Sie
arbeiten während der Arbeitszeit.
(Ephraim Kishon, israelischer Satiriker, *1924)
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Re: Zugriff auf entfernte Webseiten
* Marc Lucksch [2005-10-10]:
Hallo Marc,
> > Was nützt mir das, wenn mein Provider das Ding nicht installiert?
> Du kopierst das Modul einfach mit in den Ordner rein, wo das Skript
> liegt. Sowas wie cgi-bin/LWP/Simple.pm und die ganzen anderen
> Dateien.
ein bisschen mehr ist das schon. Das Modul hat noch ein paar
Abhängigkeiten, wie z.B. HTTP::Status, LWP, LWP::UserAgent, HTTP::Date.
Im Archiv finden sich weitere Details dazu.
Gruss
Christian
--
#! /usr/local/bin/bash
W="Wanze";M="Mauer";L="Lauer";for I in 5 4 3 2 1 0;do echo \
"Auf der ${M:0:$I}, auf der ${L:0:$I} liegt ne dicke ${W:0:$I}"; done
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Re: Zugriff auf entfernte Webseiten
* Helmut Blass [2005-10-10]:
Hallo Helmut,
> > Ok, samma großzügig: IO::Socket::INET
> hab jetzt mal ein bisserl damit rumgespielt. Für die Initialisierung
> braucht man die IP-Adresse. Kriegt man anscheinend irgendwie mit
> gethostbyname. Wenn ich da ne URL angebe, kommt nix gescheites bei
> raus und nur wenn ich den richtigen Servernamen angebe, gibt er mir
> den auch wieder zurück. Toll!
wie der Name schon vermuten lässt, verwaltet man mit dem Modul
INET-Sockets. Das ist eine Schicht unterhalb von HTTP. Du müsstest dich
also um all die Details selbst kümmern die dir eine Bibliothek wie LWP
(die schon mit HTTP umgehen kann). Im Prinzip hiesse das Teile der
libwww nachprogrammieren.
Für sehr einfache Fälle kann man sich auch was statisches
zusammenschustern:
#!/usr/bin/perl -w
use IO::Socket;
$remote = IO::Socket::INET->new(
Proto => "tcp",
PeerAddr => "www.lackas.net",
PeerPort => "www",
) or die "cannot connect to daytime port at localhost";
print $remote "GET http://www.lackas.net/ HTTP/1.0\nHost: www.lackas.net\n\n";
print while <$remote>;
Damit kommt man auch zu einem Ergebnis, wenn denn alles gut geht.
Oben wir ein ganz einfacher HTTP-Request gemacht, der dir meine Webseite
liefern sollte.
> Für was braucht man das Ding dann eigentlich, wenn ich mir den
> Hostnamen aus der URL selber zusammenfitzeln muss?
LWP macht damit (oder auch mit Socket) die Internetverbindung zum
anderen Server auf. Das funktioniert nicht nur mit HTTP, sondern auch
mit all den anderen TCP-basierten Protokollen wir IMAP, POP3, FTP, ...
Gruss
Christian
--
Als Mensch kann man vernünftig denken und trotzdem unsinnig handeln.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Re: Zugriff auf entfernte Webseiten
Christian Lackas <delta [at] lackas.net> writes:
> * Marc Lucksch [2005-10-10]:
>
> Hallo Marc,
>
> > > Was nützt mir das, wenn mein Provider das Ding nicht installiert?
> > Du kopierst das Modul einfach mit in den Ordner rein, wo das Skript
> > liegt. Sowas wie cgi-bin/LWP/Simple.pm und die ganzen anderen
> > Dateien.
>
> ein bisschen mehr ist das schon. Das Modul hat noch ein paar
> Abhängigkeiten, wie z.B. HTTP::Status, LWP, LWP::UserAgent, HTTP::Date.
> Im Archiv finden sich weitere Details dazu.
>
Wem das zu viel ist, der kann auch HTTP::Lite verwenden.
Gruß,
Slaven
--
Slaven Rezic - slaven <at> rezic <dot> de
Tired of using file selectors? Real programmers use the TAB key for
completion and not for jumping around. Try
http://search.cpan.org/search?mode=module&query=Tk::PathEntr y
Re: Zugriff auf entfernte Webseiten
In article <20051010T153613 [at] lackas.net>, Christian Lackas <delta [at] lackas.net=
> wrote:
>Für sehr einfache Fälle kann man sich auch was statisches
>zusammenschustern:
Das wäre ja zu simpel. Ich möchte doch Webseiten von verschiedenen Serv=
ern
holen und irgendwie habe ich den Bogen noch nicht raus, was man da für
Parameter übergeben muss.
Gruss, Helmut
Re: Zugriff auf entfernte Webseiten
In article <20051010T150926 [at] lackas.net>, Christian Lackas <delta [at] lackas.net=
> wrote:
>>>bist du sicher, dass das der Timeout von PHP eingerichtet wird
>> ja ! 30 sec. ist der Wert für 'max_execution_time' Standard bei PHP.
>
>dann hilft vielleicht ein Aufruf von set_time_limit(). Wenn der
>Safe-Modus an ist, dann möchte dein Provider offenbar nicht, dass du
>Skript länger als 30 Sekunden laufen lässt.
>
>Wie auch immer, du kannst immer noch selbst einen zweiten PHP-Prozess
>ausrufen und ihm in seiner php.ini sagen, dass der Safe-Modus nicht an
>sein soll oder was ein geeigneterer Default für max_execution_time ist.
....wie denn das? Ich habe doch keinen Einfluss auf die PHP-Einstellungen
meines Providers?!
>
>Perl statt PHP zu verwenden bringt dir keinerlei Vorteile. Wenn dein
>Provider aber wirklich nicht möchte, dass deine Skripte länger als 30
>Sekunden laufen, dann hat er Möglichkeiten dir das sehr wirksam zu
>unterbinden.
Die Begrenzung gilt IMHO _nur_ für PHP, nicht für Perl.
>
>> > Es ist aber in reinem Perl geschrieben. Siehe auch unzählige
>> > Beiträge im Archiv zum dem Thema.
>> Was nützt mir das, wenn mein Provider das Ding nicht installiert?
>
>Wie willst du denn dein selbstgeschriebenes Perl-Skript auf das System
>bekommen? Was ist (aus Sicht des Systems) der Unterschied zwischen einer
>Textdatei mit Perlcode, die du selbst geschrieben hast und Textdateien
>mit Perlcode, die du nicht selbst geschrieben hast. Sind die Bits da ander=
s?
Es ging ursprünglich um das LWP-Modul, das der Provider leider nicht
installiert und wofür ich irgendeinen Ersatz haben muss.
Gruss, Helmut
>
Re: Zugriff auf entfernte Webseiten
* Helmut Blass [2005-10-10]:
Hallo Helmut,
> > Wie auch immer, du kannst immer noch selbst einen zweiten PHP-Prozess
> > ausrufen und ihm in seiner php.ini sagen, dass der Safe-Modus nicht an
> > sein soll oder was ein geeigneterer Default für max_execution_time ist.
> ...wie denn das? Ich habe doch keinen Einfluss auf die PHP-Einstellungen
> meines Providers?!
wenn du den PHP-Prozess selbst startest dann kannst du diesem Prozess
selbstverständlich sagen welche php.ini er (wenn überhaupt eine)
verwenden soll. Z.B.
system("php -c myphp.ini")
Du bist also hier völlig unabhängig von den PHP-Einstellungen deines
Providers. Weitere Details entnimmt bitte deiner PHP-Dokumentation.
> > Perl statt PHP zu verwenden bringt dir keinerlei Vorteile. Wenn dein
> > Provider aber wirklich nicht möchte, dass deine Skripte länger als 30
> > Sekunden laufen, dann hat er Möglichkeiten dir das sehr wirksam zu
> > unterbinden.
> Die Begrenzung gilt IMHO _nur_ für PHP, nicht für Perl.
Hast du das mal ausprobiert? Das geht ja nun recht schnell und einfach.
Insbesondere bei mehreren Benutzern auf einem System sind CGI-Skripte
mit unbegrenzter Laufzeit oft ein Problem.
> > Wie willst du denn dein selbstgeschriebenes Perl-Skript auf das System
> > bekommen? Was ist (aus Sicht des Systems) der Unterschied zwischen einer
> > Textdatei mit Perlcode, die du selbst geschrieben hast und Textdateien
> > mit Perlcode, die du nicht selbst geschrieben hast. Sind die Bits da anders?
> Es ging ursprünglich um das LWP-Modul, das der Provider leider nicht
> installiert und wofür ich irgendeinen Ersatz haben muss.
Ja. Und die libwww besteht aus Text-Dateien, die du auf den Serrve
hochladen und dann benutzen kannst. Meistens braucht man seinen Provider
nicht, um reine Perl-Module 'installieren' zu können.
Hast du die HTTP::Lite schon angesehen wie Slaven ja vorgeschlagen hat?
Und hast du dir schon ein gutes Perl-Buch besorgt? Vorschläge findest du
hier:
http://www.worldmusic.de/perl/
Gruss
Christian
--
Good's Regel - angepaßt:
Wenn der Lösungsweg nicht auf dein Problem paßt, dann ändere einfach
das Problem.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Re: Zugriff auf entfernte Webseiten
In article <20051010T150926 [at] lackas.net>, Christian Lackas <delta [at] lackas.net=
> wrote:
>dann hilft vielleicht ein Aufruf von set_time_limit(). Wenn der
das scheint tatsächlich zu klappen. Hätte nicht gedacht, dass man als U=
ser
solche Parametereinstellungen selber ändern kann. Dann wird das
Ding hoffentlich auch ohne Perl-Krücken gehen....
thanx, Helmut
Re: Zugriff auf entfernte Webseiten
In article <20051010T141428 [at] lackas.net>, Christian Lackas <delta [at] lackas.net=
> wrote:
>* Helmut Blass [2005-10-10]:
>
>Hallo Helmut,
>
>> ich bastele gerade ein PHP-Batch-Script, wo ich von meinem
>> Internet-Server entfernte Webseiten hole und verarbeite. Dummerweise
>> hat PHP ein Timeout von 30 Sekunden, danach wird der Prozess gekillt.
>
>bist du sicher, dass das der Timeout von PHP eingerichtet wird
ja ! 30 sec. ist der Wert für 'max_execution_time'
Standard bei PHP.
>> Gibt es evtl. in Perl, aber _nur_ in der Standarddistribution (die bei
>> jedem Internet-Provider installiert ist) die Möglichkeit, auf
>> entfernte Webseiten zuzugreifen? IMHO ist das nur mit dem LWP-Modul
>> möglich und das ist dummerweise nicht in der
>> Standarddistribution...:-((
>
>Es ist aber in reinem Perl geschrieben. Siehe auch unzählige Beiträge =
im
>Archiv zum dem Thema.
Was nützt mir das, wenn mein Provider das Ding nicht installiert?
Gruss, Helmut
--
...wir finden im menschlichen Herzen auch einen verderbten Gleichheitstrieb=
,
der bewirkt, daß die Schwachen die Starken zu sich herunterziehen wollen =
und daß
die Menschen die Gleichheit in der Knechtschaft der Ungleichheit in der Fre=
iheit
vorziehen.
Alexis de Tocqueville
Re: Zugriff auf entfernte Webseiten
* Helmut Blass [2005-10-11]:
Hallo Helmut,
> > dann hilft vielleicht ein Aufruf von set_time_limit(). Wenn der
> das scheint tatsächlich zu klappen. Hätte nicht gedacht, dass man als
> User solche Parametereinstellungen selber ändern kann.
wie du deiner PHP-Dokumentation entnehmen kannst, hängt das mit dem
Safe-Mode zusammen (du kennst phpinfo() um dir solche und andere Details
anzeigen zu lassen, oder?).
Gruss
Christian
--
Disziplin ist die Fähigkeit, dümmer zu erscheinen als der Chef.
(Hans Schwarz, 1898-1977)
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker