mirror of
https://github.com/php/doc-de.git
synced 2026-03-29 18:52:13 +02:00
git-svn-id: https://svn.php.net/repository/phpdoc/de/trunk@93663 c90b9560-bf6c-de11-be94-00142212c4b1
118 lines
3.2 KiB
XML
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">
|
|
<?php
|
|
// gemeinsames Speichersegment beschaffen
|
|
if(! ($mkey = shm_attach(0x2328,1024,OctDec("666"))))
|
|
{ echo "shmem_attach fehlgeschlagen<br>\n"; exit;}
|
|
|
|
// Semaphor für Zugriffskoordination auf
|
|
// Speichersegment beschaffen
|
|
if(! ($skey = sem_get(0x2328,1,OctDec("666"))))
|
|
{ echo "sem_get fehlgeschlagen<br>\n"; exit;}
|
|
|
|
// Zugriff anfordern
|
|
if(! sem_acquire($skey))
|
|
{ echo "sem_acquire fehlgeschlagen<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<br>\n";
|
|
shm_put_var($mkey,1,$val);
|
|
|
|
// Zugriff freigeben
|
|
sem_release($skey);
|
|
?>
|
|
</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:
|
|
-->
|
|
|