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

TheChaos

Mitglied
Mitglied seit
23 Apr 2004
Beiträge
479
Punkte für Reaktionen
0
Punkte
0
schickes smiley ;)

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

rollo

IPPF-Promi
Mitglied seit
5 Jul 2004
Beiträge
8,289
Punkte für Reaktionen
1
Punkte
38
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.
 

TheChaos

Mitglied
Mitglied seit
23 Apr 2004
Beiträge
479
Punkte für Reaktionen
0
Punkte
0
ok soviel zu dem problem ;)

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

Malte.

Mitglied
Mitglied seit
4 Jun 2004
Beiträge
656
Punkte für Reaktionen
0
Punkte
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.
 

TheChaos

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

TheChaos

Mitglied
Mitglied seit
23 Apr 2004
Beiträge
479
Punkte für Reaktionen
0
Punkte
0
hab ich doch geschrieben
 

jon

Neuer User
Mitglied seit
28 Jun 2004
Beiträge
138
Punkte für Reaktionen
0
Punkte
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

CyberKing2k

Aktives Mitglied
Mitglied seit
5 Jun 2004
Beiträge
1,037
Punkte für Reaktionen
0
Punkte
36
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?
 

TheChaos

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

jon

Neuer User
Mitglied seit
28 Jun 2004
Beiträge
138
Punkte für Reaktionen
0
Punkte
0
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
 
E

Evil Dead

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

Malte.

Mitglied
Mitglied seit
4 Jun 2004
Beiträge
656
Punkte für Reaktionen
0
Punkte
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...
 

Malte.

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

TheChaos

Mitglied
Mitglied seit
23 Apr 2004
Beiträge
479
Punkte für Reaktionen
0
Punkte
0
dann baut der bei dir überhaupt keine verbindung auf, sendet er auch was?
 

Udo

Mitglied
Mitglied seit
20 Feb 2004
Beiträge
571
Punkte für Reaktionen
0
Punkte
0
@TheChaos: nette Sache haste da wieder gemacht ;-)
Danke!
 

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
233,097
Beiträge
2,030,127
Mitglieder
351,427
Neuestes Mitglied
SMini