.titleBar { margin-bottom: 5px!important; }

SipStat for PHP

Dieses Thema im Forum "sipgate" wurde erstellt von TheChaos, 15 Juli 2004.

  1. TheChaos

    TheChaos Mitglied

    Registriert seit:
    23 Apr. 2004
    Beiträge:
    479
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ok, ich konnts nicht lassen. ich programmier eh lieber als ich lerne ... :roll: wenn ich irgendwo durchfalle seid ihr alle dran schuld ;)

    also nachdem ich fast verzweifelt bin läufts nun unter php. einfach alles in ein verzeichnis auf dem webspace eurer wahl. chmod 777 für phoneStatus.gif, der rest alles auf 755. noch eure daten in SipStat.php eintragen und dann alle 10 minuten das script aufrufen. wie ihr das macht weiss ich nicht, eine bessere lösung hab ich nicht gefunden, weil schon allein das ausführen des script dauert bei mir knapp 45 sekunden. somit ist ein einbinden direkt nicht sehr sinnvoll. linux user machen sich am besten einen cron job. die anderen ... taskplaner vielleicht? :)

    wichtig 1
    bitte nicht öfter als 10 minuten aktualisieren

    wichtig 2
    euer php muss mit openssl unterstützung sein. jeder anständige provider macht das eigentlich.

    so ich habe fertig für heute ;)
     

    Anhänge:

  2. Malte.

    Malte. Mitglied

    Registriert seit:
    4 Juni 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    :groesste:

    Super, ich werde es sofort ausprobieren. :)
     
  3. TheChaos

    TheChaos Mitglied

    Registriert seit:
    23 Apr. 2004
    Beiträge:
    479
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    schickes smiley ;)

    ps: läuft bei mir schon seit 2 stunden, eingetragen als cronjob
     
  4. rollo

    rollo IPPF-Promi

    Registriert seit:
    5 Juli 2004
    Beiträge:
    8,278
    Zustimmungen:
    1
    Punkte für Erfolge:
    38
    Ort:
    JO30SK
    Eigentlich kann man ja nicht viel falsch machen aber:

    Wenn ich SipStat.php von der Kommandozeile aufrufe gibt es Fehlermeldungen

    Wenn ich SipStat.php imBrowser aufrufe und mir anschliessend phoneStatus.gif anschaue zeigt es immer offline.
    Das Serverlog zeigt keine Fehler.

    Status by sipgate ist aber online, wie sich das gehört.

    Irgendwelche geheimen tricks?

    jo

    Edit:
    Sehe gerade, dass ich auf der Sipgate Seite nur "halb" online bin. Mein Telefonbucheintrag zeigt mich online, Beim Status "Telefon online" steht offlein.
    Da ich sowohl rein wie raus telefonieren kann scheint da bei sipgate etwas nicht zu stimmen.
     
  5. TheChaos

    TheChaos Mitglied

    Registriert seit:
    23 Apr. 2004
    Beiträge:
    479
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ok soviel zu dem problem ;)

    hats sonst noch jemand getestet? ein wenig feedback wär schon schön ...
     
  6. Malte.

    Malte. Mitglied

    Registriert seit:
    4 Juni 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Also bei mir kommt auch immer nur offline heraus.
    Und im Gegensatz zur Java-Version, meldet Sipgate anschließend auch keine Login - also die Uhrzeit beim letzten Login auf der Homepage wird nicht hochgezählt. :-(

    Ich hab noch folgende Idee, um das cron-Problem zu lösen:
    Anstatt in der SipStat.php die Grafik zu kopieren, könnte man ähnlich wie in der Java-Version den Status in einer Datei speichern. Wenn man nun in dieser Datei noch die Zeit der letzten Abfrage speichert, kann man in einem zweiten Script prüfen, ob diese Zeit länger als 10 Min. zurück liegt. Falls nicht, wird einfach nur das zum Status passende Bild zurückgegeben. Falls doch wird zunächst wieder SipStat.php ausgeführt und anschließend das Bild zurückgegeben. Evtl. würde man auch immer das alte Bild zurückgeben und erst im Anschluß SipStat ausführen, wenn nötig. Dann würde eine Anfrage nicht so lange dauern, um aber sicher ein aktuelles Bild zu erhalten, muss man zwei Abfragen machen - macht also Sinn, wenn sowieso viele Anfragen auf die Datei gemacht werden.
     
  7. TheChaos

    TheChaos Mitglied

    Registriert seit:
    23 Apr. 2004
    Beiträge:
    479
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    also das mit dem offline anzeigen habe ich hier überhaupt nicht ... lasst ihr das script lokal laufen oder bei nem host mit ner dicken anbindung? ich könnte mir nur vorstellen, dass der timeout zu klein ist.

    weiterhin finde ich die alternative mit dem scipt direkt aufrufen nicht gut, auch wenn eine abfrage drin ist, die alle 10 min nur ein update zulässt. das verlangsamt trotzdem den seitenaufbau.

    so und nun zur möglichen lösung des loginproblems:
    editiert mal eure SipStat.php und fügt zwischen zeile 16 und 17
    Code:
    16: $login = new Net_HTTP_Client();
    17: $login->setProtocolVersion( "1.1" );
    
    das ein:

    Code:
    16: $login = new Net_HTTP_Client();
    17: $login->setDebug( DBGINDATA | DBGOUTDATA );
    18: $login->setProtocolVersion( "1.1" );
    
    dann kopiert ihr die ausgabe am besten in eine datei, löscht eure zugangsdaten und mailt das dann an (thechaos AT networkchallenge.de). ich schau mir das mal an. interessiert mich nämlich auch.

    schönen abend noch
     
  8. otaku42

    otaku42 Admin-Team

    Registriert seit:
    26 März 2004
    Beiträge:
    1,670
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ihr solltet vorher aber schauen, ob der Username und/oder das Passwort fuer euren Webzugang bei Sipgate im Logfile enthalten ist und diese Daten jeweils unkenntlich machen. :)

    Ciao, Mike
     
  9. TheChaos

    TheChaos Mitglied

    Registriert seit:
    23 Apr. 2004
    Beiträge:
    479
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hab ich doch geschrieben
     
  10. otaku42

    otaku42 Admin-Team

    Registriert seit:
    26 März 2004
    Beiträge:
    1,670
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    *grummel* Ja, hast ja recht. Sorry, war gerade erst aus dem Bett raus, vielleicht sollte ich so frueh noch keine Beitraege hier schreiben.

    Ciao, Mike
     
  11. jon

    jon Neuer User

    Registriert seit:
    28 Juni 2004
    Beiträge:
    138
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Dynamische Erweiterung:

    Anstelle alle 10 Minuten zu aktualisieren, wo doch einen Großteil der Zeit keiner draufschaut, habe ich die Sache etwas verdynamisiert. edit: im Prinzip Malte's Idee, hatte den Thread hier erst später gelesen

    ShowSipStat.php zeigt den Status (aufbauen auf SipStat), aktualisiert diesen höchstens einmal in 10 Minuten, allerdings nur, wenn wirklich Anfragen reinkommen.

    Da die Aktualisierung recht lange dauert, und parallel mehrere Clients die Abfrage gleichzeitig starten könnten, wird dies zusätzlich abgefangen. Hierfür wird in lastupdate.txt (auf die man Schreibrechte haben sollte) ein Status und Timestamp sowie (als Spielerei) ein Updatecounter gespeichert.

    Siehe Anhang und Signature :)

    edit: mir fiel grad noch auf, dass ihr schon mehrfach meintet, dies wär nicht so gut, weil es den Seitenaufbau verzögert.. nun, es verzögert lediglich die Anzeige des Bildes, die Seite ist davon überhaupt nicht betroffen, und falls jemand kürzer als 45sek auf der Seite ist, hat ihn mein Onlinestatus vllt. sowieso nicht interessiert :wink:, es wird jedenfalls nichts langsamer.

    Gruß, Jon
     

    Anhänge:

  12. CyberKing2k

    CyberKing2k Aktives Mitglied

    Registriert seit:
    5 Juni 2004
    Beiträge:
    1,034
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Beruf:
    FA / AE
    Ort:
    Berlin-Friedrichshain
    Hallo,

    ich habe diese schritte duchgeführt:

    ich bekomme diese meldung auf Aufruf.

    Warning: fread() [function.fread]: SSL: fatal protocol error in /www/htdocs/v107346/sipstat/Client.php on line 743

    Warning: fread() [function.fread]: SSL: fatal protocol error in /www/htdocs/v107346/sipstat/Client.php on line 743


    Dabei ist die Unterstützung von ssl gewährleistet:

    SERVER_SOFTWARE Apache/1.3.27 (Linux/SuSE) FrontPage/4.0.4.3 PHP/4.3.1 mod_perl/1.27 mod_ssl/2.8.12 OpenSSL/0.9.6i

    Könnt ihr mir ein Tipp geben?
     
  13. TheChaos

    TheChaos Mitglied

    Registriert seit:
    23 Apr. 2004
    Beiträge:
    479
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ignorieren, deine warnings sind wohl eingeschaltet, das kommt bei mir auch, tut aber dem funktionieren nix, weils halt nur eine warnung ist und kein fehler.

    wie gesagt es sollte trotzdem laufen

    @jon:

    wäre schön wenn du veränderungen machst, dass du die allen zugänglich machst, danke
     
  14. jon

    jon Neuer User

    Registriert seit:
    28 Juni 2004
    Beiträge:
    138
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Sorry, dachte auch das hätte ich gemacht. Hab erst jetzt beim erneuten Probieren festgestellt das PHP Dateien als Attachment nicht erlaubt sind, deshalb hab ich jetzt nochmal alles in ein ZIP gepackt.

    @CyberKing2k
    Wenn die Warnungen wie TheChaos sagt nicht weiter tragisch sind, dann stelle den entsprechenden Befehlen ein @ Zeichen vor, um die Meldungen zu unterdrücken. Andernfalls wird ShowSipStat nicht funktionieren (falls Du das verwenden möchtest). Zum Beispiel:
    Code:
    $buffer = @fread( $this->socket, 1024 );
    
    Jon
     
  15. Evil Dead

    Evil Dead Guest

    @jon: Danke für das Bereitstellen. Aber du solltest deine Nutzerdaten aus der SipStat.php entfernen. :!: :wink:
     
  16. jon

    jon Neuer User

    Registriert seit:
    28 Juni 2004
    Beiträge:
    138
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Verdammt .... :lol: Aber danke Dir auch, dass Du's gleich ins Forum geschrieben hast.... ne PM hätts auch getan ;-)

    Gruß, Jon
     
  17. Malte.

    Malte. Mitglied

    Registriert seit:
    4 Juni 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @Jon: Da hätte ich mir die Idee wohl schnell patentieren lassen sollen. ;-)
    Naja, ist ja ziemlich naheliegend. Schon mal danke für's Bereitstellen.
    Leider konnte ich den Code noch nicht ausprobieren, habe aber schon mal drauf geschaut und mir ist noch folgende Idee gekommen:
    Anstatt nun jedesmal die Grafik hin und her zu kopieren, sollte an der Stelle, wo Du die gif-Datei herausschickst, einfach der Status geprüft werden und je nachdem die eine oder andere Grafik-Datei gelesen werden. Das spart den Kopieroverhead.
    Außerdem ist schon verwunderlich, warum alle drei Grafiken online.gif, offline.gif und phoneStatus.gif unterschiedliche Dateigrößen haben - eigentlich müsste phoneStatus.gif doch mit einer der anderen beiden identisch sein...
     
  18. Malte.

    Malte. Mitglied

    Registriert seit:
    4 Juni 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Mmh, ich habe gerade mal den DEBUG-Befehl eingefügt.
    Die einzige Ausgabe im Browser ist:
    DBG.INDATA responseHeaders=Array ( )
     
  19. TheChaos

    TheChaos Mitglied

    Registriert seit:
    23 Apr. 2004
    Beiträge:
    479
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    dann baut der bei dir überhaupt keine verbindung auf, sendet er auch was?
     
  20. Udo

    Udo Mitglied

    Registriert seit:
    20 Feb. 2004
    Beiträge:
    571
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Düsseldorf
    @TheChaos: nette Sache haste da wieder gemacht ;-)
    Danke!