php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-10-2009, 16:19
Jarez
 Registrierter Benutzer
Links : Onlinestatus : Jarez ist offline
Registriert seit: Oct 2009
Beiträge: 8
Jarez befindet sich auf einem aufstrebenden Ast
Standard Bing - Sitemap Ping

Hallo zusammen,

ich tüftel sei heute Mittag an einem Problem herum und komme nicht weiter. Hoffe ihr könnt helfen.

Ich möchte Bing automatisch über Aktualisierungen meiner Seite informieren und möchte dazu XML Sitemaps nutzen. Das Erstellen der Sitemap ging einfach. Manuell kann ich diese ja ganz einfach an Bing übermitteln, in dem ich das im Browser aufrufe:

PHP-Code:
http://www.bing.com/webmaster/ping.aspx?siteMap=http://www.domain.com/sitemap.xml 
Das soll aber automatisch passieren, sobald ich die Sitemap geschrieben habe ... so wie bei Wordpress ... und ich möchte eine Fehler- bzw. Erfolgsmeldung zurück haben.

Mein Lösungsansatz:

PHP-Code:
    function pingBingSitemaps$url_xml )
    {
       
$status 0;
       
$bing 'http://www.bing.com/webmaster';
       if( 
$fp=@fsockopen($bing80) )
       {
          
$req =  'GET /ping.aspx?siteMap=' .
                  
urlencode$url_xml ) . " HTTP/1.1\r\n" .
                  
"Host: $bing\r\n" .
                  
"User-Agent: Mozilla/5.0 (compatible; " .
                  
PHP_OS ") PHP/" PHP_VERSION "\r\n" .
                  
"Connection: Close\r\n\r\n";
          
fwrite$fp$req );
          while( !
feof($fp) )
          {
             if( @
preg_match('~^HTTP/\d\.\d (\d+)~i'fgets($fp128), $m) )
             {
                
$status intval$m[1] );
                break;
             }
          }
          
fclose$fp );
       }
       return( 
$status );
    }




        if( 
200 === ($status=pingBingSitemaps($url_xml)) )
        {
           
$status_ping_bing "<b>Bing Sitemap Ping:</b> erfolgreich - Status code: $status.<br>\n";
        }
        else
        {
           
$status_ping_bing "<b>Bing Sitemap Ping:</b> fehlgeschlafen - Status code: $status.<br>\n";
        } 
wobei $url_xml die URL zu meiner Seitemap ist.

Code 200 ist ja der, den man bei Erfolg erhält?! Richtig?!

Leider funktioniert das so nicht und ich weiss nicht warum?! Ich bekomme immer die Meldung, dass das Pingen fehlgeschlagen ist mit dem Rückgabewert 0.

Wenn ich das so mit den Ping Daten von Google nutze, um die Sitemap an Google zu senden ... dann klappt es ohne Fehlermeldung.

Habt ihr eine Idee?

Gruß

Michael
Mit Zitat antworten
  #2 (permalink)  
Alt 28-10-2009, 16:24
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Vom groben überfliegen her:

Guck dir unter PHP: fsockopen - Manual nochmal an, was hier an Parametern erwartet wird und guck dir dann das nochmal bei deinem Script an

EDIT:
Um es dir leichter zu machen - guck dir speziell den ersten Parameter an.

Geändert von Quetschi (28-10-2009 um 16:27 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 28-10-2009, 16:38
Jarez
 Registrierter Benutzer
Links : Onlinestatus : Jarez ist offline
Registriert seit: Oct 2009
Beiträge: 8
Jarez befindet sich auf einem aufstrebenden Ast
Standard

Danke für deinen Tipp.

Da war ich wohl etwas zu sparsam.

Den Code der Funktion habe ich jetzt mal ein wenig geändert. Dieser sieht jetzt so aus:

PHP-Code:
    function pingBingSitemaps$url_xml )
    {
       
$status 0;
       
$bing 'http://www.bing.com/webmaster';


       
$fp = @fsockopen($bing80$errno$errstr30);
    

       if (!
$fp
       { 
        echo 
"$errstr ($errno)<br />\n"
       } 
       else
       {
          
$req =  'GET /ping.aspx?siteMap=' .
                  
urlencode$url_xml ) . " HTTP/1.1\r\n" .
                  
"Host: $bing\r\n" .
                  
"User-Agent: Mozilla/5.0 (compatible; " .
                  
PHP_OS ") PHP/" PHP_VERSION "\r\n" .
                  
"Connection: Close\r\n\r\n";
          
fwrite$fp$req );
          while( !
feof($fp) )
          {
             if( @
preg_match('~^HTTP/\d\.\d (\d+)~i'fgets($fp128), $m) )
             {
                
$status intval$m[1] );
                break;
             }
          }
          
fclose$fp );
       }
       return( 
$status );
    } 
Beim Ausführen bekomme ich nun diese Fehlermeldung:

Unable to find the socket transport "http" - did you forget to enable it when you configured PHP? (1091372144)

Was heisst das?
Mit Zitat antworten
  #4 (permalink)  
Alt 28-10-2009, 16:39
Gunah
 Registrierter Benutzer
Links : Onlinestatus : Gunah ist offline
Registriert seit: Oct 2009
Beiträge: 87
Gunah befindet sich auf einem aufstrebenden Ast
Standard

meiner Meinung nach eignet sich CURL für sowas besser...

EDIT: zu deinem Problem, da steht eigtl schon beantwortet im 2ten Post!
Mit Zitat antworten
  #5 (permalink)  
Alt 28-10-2009, 16:41
Jarez
 Registrierter Benutzer
Links : Onlinestatus : Jarez ist offline
Registriert seit: Oct 2009
Beiträge: 8
Jarez befindet sich auf einem aufstrebenden Ast
Standard

wenn ich als URL für bing nur das nehme

PHP-Code:
$bing 'www.bing.com/webmaster'
dann ist die Fehlermeldung weg und ich bekomme nur:

(0)

als Ausgabe.
Mit Zitat antworten
  #6 (permalink)  
Alt 28-10-2009, 16:42
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Zitat:
Zitat von Jarez Beitrag anzeigen
Da war ich wohl etwas zu sparsam.
Nicht unbedingt - laut Manual ist nur der erste Parameter erforderlich - aber guck dir den nochmal genau an!!

Und ein bisschen Basic-Verständnis vom http-Protokoll wäre auch ned verkehrt
Mit Zitat antworten
  #7 (permalink)  
Alt 28-10-2009, 16:43
Gunah
 Registrierter Benutzer
Links : Onlinestatus : Gunah ist offline
Registriert seit: Oct 2009
Beiträge: 87
Gunah befindet sich auf einem aufstrebenden Ast
Standard

da gehört webmaster auch nicht hin ;-)
Mit Zitat antworten
  #8 (permalink)  
Alt 28-10-2009, 16:52
Jarez
 Registrierter Benutzer
Links : Onlinestatus : Jarez ist offline
Registriert seit: Oct 2009
Beiträge: 8
Jarez befindet sich auf einem aufstrebenden Ast
Standard

Mist ... stimmt ... da soll ja nur der Host rein. *andenkopffass*

Habe den Code jetzt mal so geändert:

PHP-Code:
    function pingBingSitemaps$url_xml )
    {
       
$status 0;

       
$fp = @fsockopen("www.bing.com"80);
    

       if (!
$fp
       { 
        echo 
"$errstr ($errno)<br />\n"
       } 
       else
       {
          
$req =  'GET /webmaster/ping.aspx?siteMap=' .
                  
urlencode$url_xml ) . " HTTP/1.1\r\n" .
                  
"Host: $bing\r\n" .
                  
"User-Agent: Mozilla/5.0 (compatible; " .
                  
PHP_OS ") PHP/" PHP_VERSION "\r\n" .
                  
"Connection: Close\r\n\r\n";
          
fwrite$fp$req );
          while( !
feof($fp) )
          {
             if( @
preg_match('~^HTTP/\d\.\d (\d+)~i'fgets($fp128), $m) )
             {
                
$status intval$m[1] );
                break;
             }
          }
          
fclose$fp );
       }
       return( 
$status );
    }

        if( 
200 === ($status=pingBingSitemaps($url_xml)) )
        {
           
$status_ping_bing "<b>Bing Sitemaps Ping:</b> erfolgreich - Status code: $status.<br>\n";
        }
        else
        {
           
$status_ping_bing "<b>Bing Sitemaps Ping:</b> fehlgeschlafen - Status code: $status.<br>\n";
        } 
Eine Fehlermeldung bekomme ich jetzt immer noch:

Bing Sitemaps Ping: fehlgeschlafen - Status code: 400.

Aber das eigentliche Grundübel ist ja schon mal weg.

Manchmal steht man echt auf dem Schlauch. Ich sollte ne Pause machen.

Geändert von Jarez (28-10-2009 um 16:55 Uhr) Grund: GET Zeile geändert ...
Mit Zitat antworten
  #9 (permalink)  
Alt 28-10-2009, 16:53
Gunah
 Registrierter Benutzer
Links : Onlinestatus : Gunah ist offline
Registriert seit: Oct 2009
Beiträge: 87
Gunah befindet sich auf einem aufstrebenden Ast
Standard

schau noch mal auf GET ;-)
Mit Zitat antworten
  #10 (permalink)  
Alt 28-10-2009, 16:54
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Zitat:
Zitat von Jarez Beitrag anzeigen
Bing Sitemaps Ping: fehlgeschlafen - Status code: 400.
Gute Nacht!
Zitat:
Zitat von Jarez Beitrag anzeigen
Manchmal steht man echt auf dem Schlauch. Ich sollte ne Pause machen.
Siehe oben!


Mach noch beim GET ein / vor webmaster.
Mit Zitat antworten
  #11 (permalink)  
Alt 28-10-2009, 17:00
Jarez
 Registrierter Benutzer
Links : Onlinestatus : Jarez ist offline
Registriert seit: Oct 2009
Beiträge: 8
Jarez befindet sich auf einem aufstrebenden Ast
Standard

Ich sag es ja ... eine Pause ist notwendig ...

Da macht man echt die schlimmsten und dümmsten Fehler ...

Habe den Code noch mal geändert und nun funktioniert es auch.

Für alle die das auch mal brauchen:

PHP-Code:
    function pingBingSitemaps$url_xml )
    {
       
$status 0;

        
       
$fp = @fsockopen("www.bing.com"80);
    

       if (!
$fp
       { 
        echo 
"$errstr ($errno)<br />\n"
       } 
       else
       {
          
$req =  'GET /webmaster/ping.aspx?siteMap=' .
                  
urlencode$url_xml ) . " HTTP/1.1\r\n" .
                  
"Host: www.bing.com\r\n" .
                  
"User-Agent: Mozilla/5.0 (compatible; " .
                  
PHP_OS ") PHP/" PHP_VERSION "\r\n" .
                  
"Connection: Close\r\n\r\n";
          
fwrite$fp$req );
          while( !
feof($fp) )
          {
             if( @
preg_match('~^HTTP/\d\.\d (\d+)~i'fgets($fp128), $m) )
             {
                
$status intval$m[1] );
                break;
             }
          }
          
fclose$fp );
       }
       return( 
$status );
    } 
Danke für Eure Hilfe !!!!

Ich hätte da sonst noch morgen dran gesessen.
Mit Zitat antworten
  #12 (permalink)  
Alt 28-10-2009, 17:02
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Zitat:
Zitat von Jarez Beitrag anzeigen
Für alle die das auch mal brauchen
Nein, siehe Post#4 Bing - Sitemap Ping
Mit Zitat antworten
  #13 (permalink)  
Alt 28-10-2009, 17:05
Jarez
 Registrierter Benutzer
Links : Onlinestatus : Jarez ist offline
Registriert seit: Oct 2009
Beiträge: 8
Jarez befindet sich auf einem aufstrebenden Ast
Standard

Mit CURL habe ich noch nie was gemacht.

Gibt es dafür einen fertigen Code Schnipsel oder einen Lösungsansatz?
Mit Zitat antworten
  #14 (permalink)  
Alt 28-10-2009, 17:07
Gunah
 Registrierter Benutzer
Links : Onlinestatus : Gunah ist offline
Registriert seit: Oct 2009
Beiträge: 87
Gunah befindet sich auf einem aufstrebenden Ast
Standard

PHP: curl_exec - Manual
das Beispiel...

bei setOpt muss man nur darauf dann achten: "CURLOPT_RETURNTRANSFER"

Gruß
Gunah
Mit Zitat antworten
  #15 (permalink)  
Alt 28-10-2009, 17:08
Jarez
 Registrierter Benutzer
Links : Onlinestatus : Jarez ist offline
Registriert seit: Oct 2009
Beiträge: 8
Jarez befindet sich auf einem aufstrebenden Ast
Standard

Das werde ich mir einmal ganz in Ruhe anschauen.

Vielen Dank nochmals. ;o)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Neue Suchmachine: MS Bing asp2php Off-Topic Diskussionen 10 06-06-2009 20:06
bing blutiger Anfänger und möchte ein bißchen anfangen :-) Jonathan0009 Projekthilfe 25 13-09-2004 15:33
sitemap ... crusher02 PHP Developer Forum 3 27-02-2004 20:48
Sitemap the.gatekeeper PHP Developer Forum 2 03-08-2003 13:35
Sitemap-Script upperpine Apps und PHP Script Gesuche 2 24-05-2003 13:38

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:34 Uhr.