also erstmal, ich bin echt Anfänger in Sachen Websiteerstellung und dem ganzen Zeugs
![Very Happy :D](./images/smilies/icon_biggrin.gif)
- 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
![Shocked :shock:](./images/smilies/icon_eek.gif)
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
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Vielleicht kann mir ja jemand helfen, ansonsten vielen dank, daß ihr bis hierhin durchgehalten habt
![Wink :wink:](./images/smilies/icon_wink.gif)
cu Toddy