also erstmal, ich bin echt Anfänger in Sachen Websiteerstellung und dem ganzen Zeugs was dazugehört. Ich habe mir Wampp 0.13.5a heruntergeladen, nach Anweisung installiert, funzte auch auf Anhieb. Die Testsachen laufen. Ich bekomme beim Start von Apache folgende Fehlermeldung:
- Code: Select all
[Mon Jan 20 18:14:57 2003] [warn] Loaded DSO /wampp13a/apache/php4apache.dll uses plain Apache 1.3 API, this module might crash under EAPI! (please recompile it with -DEAPI)
Nun ist für mich die Frage, was bedeutet das ? Was muß ich tun?
Der näcgste punkt ist ein php Script, der OnlineBesucher zählt. Wenn ich den auf meiner Seite lasse, bekomme ich einen php-error, sieht so aus:
- Code: Select all
[20-Jan-2003 18:17:02] PHP Fatal error: Call to undefined function: shm_attach() in d:\wampp13a\htdocs\sdtboys\shmcounter.php on line 56
völlig ratlos
das php file sieht so aus:
- Code: Select all
<?php
// SHM-Counter 0.2 (06.02.2002) by Thomas Seifert (thomas.seifert@myphorum.de)
// History:
// v0.1 inital release (06.02.2002)
// v0.2 added some numbers for the size of the shm-segments (14.02.2002)
// Englisch:
// simple useronline-counter using SHM without the use of a database
// needs PHP >= 4.0.6 and compiled with --enable-sysvsem --enable-sysvshm
// German:
// simpler Online-Counter unter Nutzung von SHM-Segmenten ohne Datenbank
// benötigt PHP >= 4.0.6 und kompiliert mit --enable-sysvsem --enable-sysvshm
$time_diff=300; // Zeit in Sekunden seit letztem Zugriff, bis IP gelöscht wird
// Time in seconds until an IP is deleted from the counter
$shm_id=0x2328; // a unique key for the used SHM-segment
// ein eindeutiger Schlüssel für das SHM-Segment
$shm_size=3072; // Size of the shm-segment in Byte
// Größe des genutzten SHM-Speicherbereiches in Byte
/* English:
I did some tests about the needed size for the shm-segment:
the default (1024 = 1KByte) is enough for around 15 entries
10*1024 (10 KByte) is enough for around 150 entries (150 different users online in 5 minutes)...
that's the line.
So please choose the number based on these calculations
*/
/* Deutsch:
Ich hab einmal ein paar Tests für die Größe des SHM-Segments gemacht:
die Vorgabe von 1024 (1 KByte) reicht für ca. 15 Einträge
10*1024 (10 KByte) reicht für ca. 150 Einträge (also 150 User die gleichzeitig innerhalb 5 Minuten online sind) ...
... und so weiter
Also bitte die Segmentgröße basierend auf diesen Kalkulationen wählen.
*/
// no changes needed below this line
// ab hier sind (eigentlich) keine Änderungen mehr nötig
// ----------------------------------------------------------------------------
// unter welcher Zeit killen wir?
$break_time=time()-$time_diff;
// kleine callback-Funktion
function timeok($var) {
GLOBAL $break_time;
return($var >= $break_time);
} // end func
// gemeinsames Speichersegment beschaffen
if(! ($mkey = shm_attach($shm_id,$shm_size,OctDec("666")))) {
echo "shmem_attach failed<br>\n";
exit;
}
// Semaphor für Zugriffskoordination auf
// Speichersegment beschaffen
if(! ($skey = sem_get($shm_id,1,OctDec("666")))) {
echo "sem_get failed<br>\n";
exit;
}
// Zugriff anfordern
if(! sem_acquire($skey)) {
echo "sem_acquire failed<br>\n";
exit;
}
// Wert lesen, aktualisieren und schreiben
$val = @shm_get_var($mkey,1);
// IP neu reinschreiben oder aktualisieren
if($val==false)
$val=array();
$val[$REMOTE_ADDR]=time();
// array-filtern
$val_new = array_filter($val, 'timeok');
shm_put_var($mkey,1,$val_new);
// Zugriff freigeben
sem_release($skey);
// output (format as needed)
// Ausgabe (formatieren wie benötigt)
echo "<br>User online: " . count($val_new);
?>
Muß ich nun noch irgendwo in irgendeiner ini.datei noch etwas reinschreiben oder freischalten ??? Oder kann das auch sein, daß die Funktionen in dem php Script eher auf Unix geschrieben sind, ich benutze Win XP prof.
Vielleicht kann mir ja jemand helfen, ansonsten vielen dank, daß ihr bis hierhin durchgehalten habt
cu Toddy