phpbar.de logo

Mailinglisten-Archive

[php] PHP-Shared-Memory =?iso-8859-1?Q?l=E4uft?= zu?

[php] PHP-Shared-Memory =?iso-8859-1?Q?l=E4uft?= zu?

Andre Temme temme_(at)_globalpark.de
Mon, 05 Feb 2001 12:07:46 +0100


Hallo,

für einen PHP-Chat benutze ich shared-memory zur
Interprozesskommunikation, lief jetzt auch lange optimal. Plötzlich
bekomme ich aber die Meldung:

semget() failed for key 0x3a799372: No space left on device in
/vol/www/ordner/htdocs/datei.php on line 57

Meine Vermutung: Speicher zugelaufen, top zeigt aber nichts dergleichen
an. Zur Erläuterung: Beim Anlegen einer Chat-Sitzung wird ein
Shared-Memory unter einem neuen key angelegt, dieser wird während der
Chat-Sitzung benutzt, und er endet mit dem Anlegen einer neuen Sitzung,
die ein shm_remove auf den key ausführt und dann unter einem neuen key
(ich benutze den unix-timestamp) einen neuen Shared-Memory-Bereich
anlegt (noch Hintergrund: Chat-Sitzungen laufen zur
Kommunikationsforschung und sind zeitlich befristet).

Der Codeschnipsel, der obigen Fehler auslöst:

if(! ($sem_key = sem_get($sm_adress_key)))    {
        echo "sem_get fehlgeschlagen<br>\n";
        exit;
    }


Hat da jemand eine Idee?
Außerdem: Wenn sowas auf meinem lokalen Entwicklungsserver auftritt,
habe ich kein Problem damit, diesen neu zu starten, dann ist der
Speicher frei, mein Admin weigert sich aber - relativ nachvollziehbar -
das mit dem Internet-Server zu tun. Gibt es eine Möglichkeit, den
Speicher wieder freizugeben - was er nach top ja auch ist - ohne den
Server neu zu starten? Apache neustarten brachte keine Änderung. 
Alternativ wurde mir die Interprozesskommunikation über sockets
nahegelegt, wie ist denn da die Meinung der werten PHP-Gemeinde? Ist
Shared-Memory bzw. ihre Implementierung wirklich Mist und sollte
tunlichst vermieden werden? Taugen die neuen 4.04-Befehle mehr?

Fragen über Fragen,
hoffentlich weiß eine(r) was,
Gruß

Andre Temme


php::bar PHP Wiki   -   Listenarchive