Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Url Aufrufen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
pebosi
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 06.11.2004, 18:38

Beitrag von pebosi » 10.11.2005, 10:36

Hi,

ich möchte bei einem Projekt (PHP)
folgende URL aufrufen:
https://www.google.com/webmasters/sitemaps/ping?
sitemap=https://domain.de/map.xml
(eine Zeile)

Wie kann ich das "versteckt" öffnen...allerdings ohne PEAR...

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Bauchladen
PostRank 6
PostRank 6
Beiträge: 388
Registriert: 24.04.2005, 13:51
Wohnort: Hamburg

Beitrag von Bauchladen » 10.11.2005, 10:40

https://sourceforge.net/projects/snoopy/

Beispiel

Code: Alles auswählen

$client = new Snoopy();
$client->agent = 'MeinHTTPClient;
$client->read_timeout = 20; // bei proxies hoeher
$client->use_gzip = false;
@$client->fetch($url);
Bild

pebosi
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 06.11.2004, 18:38

Beitrag von pebosi » 10.11.2005, 12:41

ah danke werde das mal testen, gibt es vielleicht eine möglichkeit ohne klasse?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


pebosi
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 06.11.2004, 18:38

Beitrag von pebosi » 10.11.2005, 14:31

so habs jetzt mal eingebaut, ist ja ein super teil... hab mir dann mal den Status ausgeben lassen den der Google Server mit zurückgibt, dieser ist 0, das sollte doch heissen das die Sitemap übermittelt wurde oder?

Babelfisch
PostRank 5
PostRank 5
Beiträge: 204
Registriert: 05.10.2005, 14:15
Wohnort: Leipzig

Beitrag von Babelfisch » 10.11.2005, 23:59

Der HTTP Statuscode sollte eher 200 sein. Mach mal das @ vor der letzten Zeile weg, vielleicht wird ja eine Fehlermeldung ausgegeben.

Ohne Snoopy ist es übrigens auch nicht wirklich schwerer:

Code: Alles auswählen

if ($fp = fsockopen ('www.google.com', 80, $errno, $errstr, 30)) {

	fputs ($fp, "GET /webmasters/sitemaps/ping?sitemap=http://example.com/map.xml HTTP/1.0\r\n\r\n");
	fputs($fp, "Host: www.google.com\r\n");
	fputs($fp, "Connection: close\r\n\r\n");

   while (!feof($fp)) {
       echo fgets($fp,128);
   }

   fclose($fp);

}
Zuletzt geändert von Babelfisch am 11.11.2005, 09:56, insgesamt 1-mal geändert.

tobsn
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 26.10.2005, 02:10

Beitrag von tobsn » 11.11.2005, 01:39

readfile( 'url' );

8)

Bauchladen
PostRank 6
PostRank 6
Beiträge: 388
Registriert: 24.04.2005, 13:51
Wohnort: Hamburg

Beitrag von Bauchladen » 11.11.2005, 08:42

Solange es keine Redirects gibt und man keine HTTP Fehlercodes braucht. Irgendwann wundert man sich dann warum das Skript nicht mehr geht und merkt dann 3 Threads und 7 Tage später dass man das doch gleich von Anfang an richtig hätte machen sollen.

Gruss,

Bauchladen

ps: `wget $url` # ;) .. macht auch redirects!
Bild

Babelfisch
PostRank 5
PostRank 5
Beiträge: 204
Registriert: 05.10.2005, 14:15
Wohnort: Leipzig

Beitrag von Babelfisch » 11.11.2005, 10:44

Bauchladen hat geschrieben:Solange es keine Redirects gibt und man keine HTTP Fehlercodes braucht.
Den Statuscode kann man auch relativ leicht ermitteln und ein Redirect ist jetzt auch nicht so die Hürde. Ich hab hier mal schnell eine Funktion dafür zusammengezimmert:

Code: Alles auswählen

function get_url($url, &$http_status, $count = 1) {

	$url_parts = parse_url($url);
	
	$port = (isset($url_parts['port'])) ? $url_parts['port'] : 80;
	$query = (isset($url_parts['query'])) ? '?'.$url_parts['query'] : '';
	
	if ($fp = @fsockopen($url_parts['host'], $port, $errno, $errstr, 30)) {

		fputs($fp, 'GET '.$url_parts['path'].$query." HTTP/1.0\r\n");
		fputs($fp, 'Host: '.$url_parts['host']."\r\n");
		fputs($fp, "User-Agent: PHP\r\n");
		fputs($fp, "Connection: close\r\n\r\n");

		$in_body = FALSE;
		$body = '';

		while (!feof($fp)) {
	
			$line = fgets($fp, 128);
			
			if ($in_body) {
				
				$body .= $line;
			
			}	elseif (preg_match('=HTTP/1\.[1|0]\s([0-9]{3})=si', $line, $match)) {
	
				$http_status = $match[1];
	
			} elseif (preg_match('=Location:(.*)=si', $line, $match)) {
	
				$http_location = trim($match[1]);
	
			} elseif ($line == "\r\n") {
			
				$in_body = TRUE;
			
			}
	
		}
	
		fclose($fp);
		
		if (in_array($http_status, array(301, 302, 303, 307))) {

			if ($count > 20) {

				print('Fehler: Redirect Limit überschritten');

				return FALSE;

			} elseif (!empty($http_location)) {

				return get_url($http_location, $http_status, $count+1);

			}
		
		} elseif (in_array($http_status, array(200, 201, 202, 204, 205))) {

			return $body;

		} else {

			return FALSE;

		}

	} else {

		$http_status = -1;

		return FALSE;

	}

}

if ($content = get_url('http://w3.org/', $status)) {

  print($content);

} else {

  print('Fehler: '.$status);

}
Ist jetzt nicht groß getestet, sollte aber eigentlich funktionieren.
Bauchladen hat geschrieben:Irgendwann wundert man sich dann warum das Skript nicht mehr geht und merkt dann 3 Threads und 7 Tage später dass man das doch gleich von Anfang an richtig hätte machen sollen.
Dann fehlt in deinem Beispiel aber auch noch eine rudimentäre Fehlerüberprüfung. :wink:

Bauchladen
PostRank 6
PostRank 6
Beiträge: 388
Registriert: 24.04.2005, 13:51
Wohnort: Hamburg

Beitrag von Bauchladen » 11.11.2005, 10:55

Babelfisch hat geschrieben: Den Statuscode kann man auch relativ leicht ermitteln und ein Redirect ist jetzt auch nicht so die Hürde. Ich hab hier mal schnell eine Funktion dafür zusammengezimmert:

Code: Alles auswählen

function get_url($url, &$http_status, $count = 1) {
...
Ist jetzt nicht groß getestet, sollte aber eigentlich funktionieren.
Wow klasse. Warum auch bereits getesteten und probaten Code (der zudem nahezu 100% Standard konform ist) Reusen wenn man sich schnell mal eben selbst einen Strick knüpfen kann. Dein Kunde möchte ich echt nicht sein. Sorry, aber du bist für mich ein Frickler und Eigenbrötler.
Babelfisch hat geschrieben:
Bauchladen hat geschrieben:Irgendwann wundert man sich dann warum das Skript nicht mehr geht und merkt dann 3 Threads und 7 Tage später dass man das doch gleich von Anfang an richtig hätte machen sollen.
Dann fehlt in deinem Beispiel aber auch noch eine rudimentäre Fehlerüberprüfung. :wink:
Wäre ein Einzeiler .. merkst du den Unterschied ?


Gruss

Bauchladen
Bild

Babelfisch
PostRank 5
PostRank 5
Beiträge: 204
Registriert: 05.10.2005, 14:15
Wohnort: Leipzig

Beitrag von Babelfisch » 11.11.2005, 11:02

Bauchladen hat geschrieben:Wow klasse. Warum auch bereits getesteten und probaten Code (der zudem nahezu 100% Standard Konform ist) Reusen wenn man sich schnell mal eben selbst einen Strick knüpfen kann. Dein Kunde möchte ich echt nicht sein. Sorry, aber du bist für mich ein Frickler und Eigenbrötler.
Was du von mir hälst, ist mir eigentlich ziemlich egal und meine Kunden haben sich auch noch nie darüber beschwert, dass ich weiß, was ich programmiere.
Babelfisch hat geschrieben:Dann fehlt in deinem Beispiel aber auch noch eine rudimentäre Fehlerüberprüfung. :wink:
Bauchladen hat geschrieben:Ist ein Einzeiler .. merkst du den Unterschied ?
Tja, ein Einzeiler ohne Fehlerüberprüfung. Wie tobsn schon schrieb, hätte dafür auch readfile() oder file() augereicht. Wie war das gleich noch mal mit den Kanonen und den Spatzen?

Bauchladen
PostRank 6
PostRank 6
Beiträge: 388
Registriert: 24.04.2005, 13:51
Wohnort: Hamburg

Beitrag von Bauchladen » 11.11.2005, 11:09

Babelfisch hat geschrieben: Tja, ein Einzeiler ohne Fehlerüberprüfung. Wie tobsn schon schrieb, hätte dafür auch readfile() oder file() augereicht. Wie war das gleich noch mal mit den Kanonen und den Spatzen?
Die Fehlerprüfung ist ein Einzeiler. Und was deine Qualifikation angeht, was meinst du warum die BigProjects der Szene auf Snoopy setzen statt das Rad nochmal neu zu erfinden ?
Bild

Babelfisch
PostRank 5
PostRank 5
Beiträge: 204
Registriert: 05.10.2005, 14:15
Wohnort: Leipzig

Beitrag von Babelfisch » 11.11.2005, 11:43

Bauchladen hat geschrieben:Die Fehlerprüfung ist ein Einzeiler.
Ja natürlich ist das nur ein Einzeiler, genau wie bei meiner Funktion. Nur hast du in deinem Beispiel halt keine Fehlerüberprüfung gemacht.
Bauchladen hat geschrieben:Und was deine Qualifikation angeht, was meinst du warum die BigProjects der Szene auf Snoopy setzen statt das Rad nochmal neu zu erfinden ?
Die "BigProjects", da bin ich ja jetzt extrem beeindruckt.

Nicht das ich was gegen Snoopy haben. Für meinen Zwecke (siehe passender Eintrag in der Sig) reicht es aber nun mal nicht aus und wie ich schon sagte, ist es nie verkehrt wenn man weiß was man eigentlich macht. pebosi kann sich jedenfalls freuen, da er doch nun mehrere Möglichkeiten hat und sich eine aussuchen kann.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag