1
0
mirror of https://github.com/php/doc-de.git synced 2026-03-29 18:52:13 +02:00
Files
archived-doc-de/reference/sem/reference.xml
Martin Kraemer 4129ef4840 Switch to Newspeak
git-svn-id: https://svn.php.net/repository/phpdoc/de/trunk@93663 c90b9560-bf6c-de11-be94-00142212c4b1
2002-08-26 15:06:10 +00:00

118 lines
3.2 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.4 $ -->
<reference id="ref.sem">
<title>Semaphor und Shared Memory Funktionen</title>
<titleabbrev>Semaphore</titleabbrev>
<partintro>
<para>
Dieses Modul bietet Unterstützung für die Nutzung von Semaphoren
und gemeinamen Speichersegmenten mit Hilfe der UNIX System V
Mechanismen zur Interprozess-Kommunikation.
</para>
<para>
Mit Hilfe von Semaphoren kann der exklusive Zugriff auf Resourcen
eines Systems sichergestellt oder die Anzahl der Prozesse begrenzt
werden, die gleichzeitig eine bestimmte Systemresource nutzen.
</para>
<para>
Mit Hilfe gemeinsamer Speichersegmente (shared memory) können
system-globale Variablen angelegt und bereitgestellt werden.
Diese Speicherbereiche stehen allen Prozessen des Systems,
insbesondere aber allen parallel laufenden PHP-Instanzen
zum Datenaustausch zur Verfügung. Beachten Sie bitte, dass gemeinsame
Speichersegmente keinen Schutze vor konkurrierenden gleichzeitigen
Zugriffen bieten. Benutzen Sie Semaphore für die Koordination
solcher Zugriffe.
</para>
<para>
<table>
<title>Limits of Shared Memory by the Unix OS</title>
<tgroup cols="2">
<tbody>
<row>
<entry>SHMMAX</entry>
<entry>
Maximalgröße eines gemeinsamen Speicherbereichs,
üblich sind 131072 Byte (128KB)
</entry>
</row>
<row>
<entry>SHMMIN</entry>
<entry>
Minimalgröße eines gemeinsamen Speicherbereichs,
normalerweise 1 Byte
</entry>
</row>
<row>
<entry>SHMMNI</entry>
<entry>
maximale Anzahl unterschiedlicher Speichersegmente,
üblich sind 100
</entry>
</row>
<row>
<entry>SHMSEG</entry>
<entry>
Anzahl der Speichersegmente, die ein einzelner Prozess
einbinden darf, üblich sind 6
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
<example>
<title>Koordinierter Zugriff auf gemeinsamen Speicher</title>
<programlisting role="php">
&lt;?php
// gemeinsames Speichersegment beschaffen
if(! ($mkey = shm_attach(0x2328,1024,OctDec("666"))))
{ echo "shmem_attach fehlgeschlagen&lt;br>\n"; exit;}
// Semaphor für Zugriffskoordination auf
// Speichersegment beschaffen
if(! ($skey = sem_get(0x2328,1,OctDec("666"))))
{ echo "sem_get fehlgeschlagen&lt;br>\n"; exit;}
// Zugriff anfordern
if(! sem_acquire($skey))
{ echo "sem_acquire fehlgeschlagen&lt;br>\n"; exit;}
// Wert lesen, aktualisieren und schreiben
$val = @shm_get_var($mkey,1);
if($val===false) $val=1; else $val++;
print "new value is $val&lt;br>\n";
shm_put_var($mkey,1,$val);
// Zugriff freigeben
sem_release($skey);
?&gt;
</programlisting>
</example>
</para>
</partintro>
&reference.sem.functions;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->