Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Konzeptfrage - Internet-Chat als Freeware, wie? (https://www.delphipraxis.net/108845-konzeptfrage-internet-chat-als-freeware-wie.html)

Xong 3. Mär 2008 08:04

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von hincapie
Also, ich habe das mit CGI am Wochenende mal etwas getestet.
Offensichtlich lässt mich mein Hoster nicht so ohne weiteres Binärdateien auf dem Server ausführen.
Daher scheidet diese Variante für mich leider aus... :cry:

Schade. Aber wenigstens weißt du jetzt von der Möglichkeit. Hilfreich ist das allemal. =)

Zitat:

Zitat von hincapie
Gibt es eine Möglichkeit, mit php eine Funktion auf dem Server einzubauen, mit der man z.b. regelmäßig überprüfen kann, ob ein bestimmter Zeitraum abgelaufen ist, ohne diese Funktion immer wieder manuell neu zu starten? :gruebel:

Ja, das nennt man einen Cronjob.
Dafür ist es wichtig, eine eigene Datei zu haben, die die gewünschten Funktionen ausführt.
Hosteurope bietet so etwas auch an: http://www.hosteurope.de/faq/index.php?cpid=2054.

Solltest du ein Webpaket haben, wo das nicht unterstützt wird, dann kannst du http://www.cronjob.de kostenlos nutzen.

hincapie 3. Mär 2008 09:35

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von Xong
Solltest du ein Webpaket haben, wo das nicht unterstützt wird, dann kannst du http://www.cronjob.de kostenlos nutzen.

Nein, mein Webpaket unterstützt keine Cronjobs, also habe ich mich mal bei www.cronjob.de angemeldet. :thumb:

So, nun möchte ich mit php alle Server aus der Datenbank löschen, die mehr als einen Tag eingetragen sind:
Code:
<?php
include("../cgi-bin/einlog.php");
include("funk.php");
$timestamp = time();
$connect=@mysql_connect($dbHost, $dbUser, $dbPass) or die("F");
$sql= sprintf("DELETE FROM Chat
        WHERE Login='%s'",
   mysql_real_escape_string($timestamp -1));
If ($res=send_sql($db,$sql)) {echo "OK";}
?>
Kann das so funktionieren? :gruebel:

Xong 3. Mär 2008 11:18

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
[quote="hincapie"]
Zitat:

Zitat von Xong
So, nun möchte ich mit php alle Server aus der Datenbank löschen, die mehr als einen Tag eingetragen sind:

Wieso? Wäre es nicht besser, die Server zu löschen, die seit x Minuten inaktiv sind?

Zitat:

Zitat von hincapie
Kann das so funktionieren? :gruebel:

Nein. :roll:
Du musst schon überprüfen, welcher Server älter als einen Tag ist.
Code:
<?php
include('../cgi-bin/einlog.php');
include('funk.php');
$connect=@mysql_connect($dbHost, $dbUser, $dbPass) or die('F');
If ($res=send_sql($db,'DELETE FROM Chat
        WHERE to_days(Login) < to_days(NOW())')) {echo 'OK';}
?>
Übrigens: Die Funktion timestamp() gibt dir immer einen Wert in Sekunden zurück.

LG,
Xong

hincapie 4. Mär 2008 06:10

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von Xong
Wieso? Wäre es nicht besser, die Server zu löschen, die seit x Minuten inaktiv sind?

Mal sehen, war erst mal nur ein Anhaltspunkt, um zu sehen wie es funktioniert... :gruebel:
Zitat:

Zitat von Xong
Übrigens: Die Funktion timestamp() gibt dir immer einen Wert in Sekunden zurück.

Man lernt halt nie aus..., ansonsten natürlich vielen Dank für Deine Hilfe! :zwinker:
Sollte ich noch Fragen habn, werde ich sie hier stellen... :mrgreen:

Xong 4. Mär 2008 07:24

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von hincapie
Zitat:

Zitat von Xong
Wieso? Wäre es nicht besser, die Server zu löschen, die seit x Minuten inaktiv sind?

Mal sehen, war erst mal nur ein Anhaltspunkt, um zu sehen wie es funktioniert... :gruebel:

Ich habe mir noch einmal Gedanken darüber gemacht. Am besten wäre, wenn du die Server alle 5-10 Minuten das Anmeldeskript aufrufen lässt. Ist der Server noch nicht eingetragen, so schreibt das Skript ihn in die Liste, ansonsten wird der betreffende Eintrage (wichtig ist hier ein Zeitstempel) geupdatet.

Mit dem Cronjob fragst du schließlich alle 10-15 Minuten ab, welche Einträge älter als eben diese 10-15 Minuten sind und löschst sie aus der Liste der aktiven Server.

Zusätzlich kann sich ein Server natürlich auch regulär abmelden.


Zitat:

Zitat von hincapie
Man lernt halt nie aus..., ansonsten natürlich vielen Dank für Deine Hilfe! :zwinker:
Sollte ich noch Fragen habn, werde ich sie hier stellen... :mrgreen:

Gern. =)

hincapie 12. Mär 2008 11:33

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
@ Xong:
Hhhmm, Deine Vorschläge scheinen mir ziemlich schlüssig zu sein... :gruebel: :-D

Im Moment habe ich in der Datenbank ein Login-Feld im Date-Format, demnach müsste ich das in ein DateTime umwandeln oder ein zusätzliches Time-Feld einfügen...

Was ist wohl besser? :gruebel:

Werde mir auch nochmal die Syntax für das UPDATE-Statement in MySQL zu Gemüte führen... :coder2:

hincapie 19. Mär 2008 14:29

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Ok, ich konnte mich erst jetzt wieder mit dem Thema näher befassen...

Ich habe jetzt noch ein Feld 'LogTime' vom Typ TIME eingefügt, in diesem wird von den Servern die jeweilige Login-Zeit eingetragen.

Demnach müsste ein Script zum Löschen aller Server, die länger als 10 Minuten eingeloggt sind, wohl so aussehen? :gruebel:
Code:
<?php
include('../cgi-bin/einlog.php');
include('funk.php');
$connect=@mysql_connect($dbHost, $dbUser, $dbPass) or die('F');
If ($res=send_sql($db,'DELETE FROM Chat
        WHERE time_to_sec(LogTime) < time_to_sec(TIME()-600)')) {echo 'OK';} 
?>
Könnte man da nicht auch etwas mit TIMEDIFF machen?
Evtl. so:
Code:
...
If ($res=send_sql($db,'DELETE FROM Chat
        WHERE TIMEDIFF(LogTime, TIME()) < '00:10:00'')) {echo 'OK';} 
?>


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz