Mailinglisten-Archive |
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