SipStat for PHP

TheChaos

Mitglied
Mitglied seit
23 Apr 2004
Beiträge
479
Punkte für Reaktionen
0
Punkte
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

  • sipstatforphp.zip
    17.2 KB · Aufrufe: 107
schickes smiley ;)

ps: läuft bei mir schon seit 2 stunden, eingetragen als cronjob
 
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.
 
ok soviel zu dem problem ;)

hats sonst noch jemand getestet? ein wenig feedback wär schon schön ...
 
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.
 
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
 
hab ich doch geschrieben
 
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

  • showsipstat.zip
    18.9 KB · Aufrufe: 57
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?
 
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
 
TheChaos schrieb:
wäre schön wenn du veränderungen machst, dass du die allen zugänglich machst, danke

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
 
@jon: Danke für das Bereitstellen. Aber du solltest deine Nutzerdaten aus der SipStat.php entfernen. :!: :wink:
 
@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...
 
Mmh, ich habe gerade mal den DEBUG-Befehl eingefügt.
Die einzige Ausgabe im Browser ist:
DBG.INDATA responseHeaders=Array ( )
 
dann baut der bei dir überhaupt keine verbindung auf, sendet er auch was?
 
@TheChaos: nette Sache haste da wieder gemacht ;-)
Danke!
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.