File: shmop.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (345 lines) | stat: -rwxr-xr-x 11,935 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
<?xml version="1.0" encoding="iso-8859-1"?>
<reference id="ref.shmop">
  <title>Shared Memory Funktionen (Gemeinsamer Speicher)</title>
  <titleabbrev>shmop</titleabbrev>

  <partintro>
   <para>
    Shmop ist eine Sammlung einfach anzuwendender PHP-Funktionen,
    mit denen man mit PHP UNIX shared-memory-Segmente beschreiben,
    auslesen und lschen kann. Die Funktionen knnen mit Windows nicht
    eingesetzt werden, weil Windows keinen gemeinsamen Speicher
    untersttzt.
    Um shmop zu nutzen, mssen Sie PHP mit der Option --enable-shmop
    in der Konfiguratinszeile kompilieren.
   </para>
   <note>
    <simpara>
     Die Funktionen, die in diesem Kapitel erklrt werden, beginnen
     in PHP 4.0.3 alle mit <function>shm_</function> , aber ab Version
     PHP 4.0.4 und grsser, wurden diese Namen gendert und beginnen
     nun mit <function>shmop_</function>.
    </simpara>
   </note>
   <para>
    <example>
     <title>Shared Memory Operationen - bersicht</title>
     <programlisting role="php">
&lt;?php

// Erstelle einen 100 Byte grossen gemeinsam genutzten Speicherblock
// mit mit der System_ID if 0xff3
$shm_id = shmop_open(0xff3, "c", 0644, 100);
if(!$shm_id) {
        echo "Konnte kein gemeinsames Speichersegment erstellen\n";
}

// Hole die Grsse des gemeinsamen Speicherblocks
$shm_size = shmop_size($shm_id);
echo "SHM Block mit: ".$shm_size. " Bytes wurde erstellt.\n";

// Teststring in den gemeinsamen Speicher schreiben
$shm_bytes_written = shmop_write($shm_id, "mein gemeinsamer Speicher", 0);
if($shm_bytes_written != strlen("mein gemeinsamer Speicher")) {
        echo "Konnte nicht ermitteln, wieviele Bytes geschrieben wurden\n";
}

// Den Teststring wieder auslesen
$my_string = shmop_read($shm_id, 0, $shm_size);
if(!$my_string) {
        echo "Konnte nicht aus dem gemeinsamen Speicher lesen\n";
}
echo "Die Daten im gemeinsamen Speicher waren: ".$my_string."\n";

// Den Speicherblock lschen und den gemeinsamen Speicher schliessen
if(!shmop_delete($shm_id)) {
        echo "Konnte den gemeinsamen Speicherblock nicht zum Lschen markieren.";
}
shmop_close($shm_id);

?&gt;
     </programlisting>
    </example>
   </para>
  </partintro>

  <refentry id="function.shmop_open">
   <refnamediv>
    <refname>shmop_open</refname>
    <refpurpose>Erstellt oder ffnet einen gemeinsamen Speicherblock</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>shmop_open</methodname>
      <methodparam><type>int</type><parameter>key</parameter></methodparam>
      <methodparam><type>string</type><parameter>flags</parameter></methodparam>
      <methodparam><type>int</type><parameter>mode</parameter></methodparam>
      <methodparam><type>int</type><parameter>size</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>shmop_open</function> Kann einen gemeinsamen Speicherbereich erstellen oder ffnen
    </para>
    <para>
     <function>shmop_open</function> bentigt 4 Parameter: key, die System-ID
     des gemeinsam genutzten Speicherblocks, dieser Parameter kann als
     Dezimal- oder Hexadezimalzahl bergeben werden. Der zweite Parameter
     bezeichnet die Flags, die man benutzen kann:
     <itemizedlist>
      <listitem>
       <simpara>
        "a" zum Zugriff (access) auf einen gemeinsamen Speicherblock (setzt IPC_EXCL)
        Benutzen Sie dieses Flag, wenn Sie einen bestehenden gemeinsamen
        Speicherblock ffnen wollen.
       </simpara>
      </listitem>
      <listitem>
       <simpara>
        "c" zum Erstellen (create) eines gemeinsamen Speicherblocks (setzt IPC_CREATE)
        Benutzen Sie dieses Flag, wenn Sie einen gemeinsamen Speicherblock
        erstellen wollen.
       </simpara>
      </listitem>
     </itemizedlist>
     Der dritte Parameter ist der Modus, der die Zugriffsrechte, die Sie
     dem gemeinsamen Speicher zuweisen wollen, angibt. Das sind dieselben
     Zugriffsrechte wie fr Dateien. Zugriffsrechte mssen oktal angegeben
     werden, z.B. 0644. Der letzte Parameter gibt die Grsse des
     gemeinsamen Speichers, den Sie erstellen wollen, in Byte, an.
     <note><simpara>
      Beachten Sie: Der dritte und vierte Parameter muss als 0 angegeben
      werden, wenn Sie ein existierendes gemeinsames Speichersegment
      ffnen wollen. Bei Erfolg liefert die Funktion
      <function>shmop_open</function> eine ID zurck, die Sie zum Zugriff
      auf den erstellten gemeinsamen Speicher benutzen knnen.
     </simpara></note>
    </para>
    <para>
     <example>
      <title>Einen neuen gemeinsamen Speicherblock erstellen</title>
      <programlisting role="php">
&lt;?php
$shm_id = shmop_open(0x0fff, "c", 0644, 100);
?&gt;
      </programlisting>
     </example>
    </para>
    <para>
     In diesem Beispiel wurde ein gemeinsamer Speicherblock mit der
     System-ID 0x0fff erstellt.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.shmop_read">
   <refnamediv>
    <refname>shmop_read</refname>
    <refpurpose>Daten aus dem gemeinsamen Speicherblock auslesen</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>string</type><methodname>shmop_read</methodname>
      <methodparam><type>int</type><parameter>shmid</parameter></methodparam>
      <methodparam><type>int</type><parameter>start</parameter></methodparam>
      <methodparam><type>int</type><parameter>count</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>shmop_read</function> liest einen String aus dem gemeinsamen Speicher.
    </para>
    <para>
     <function>shmop_read</function> braucht 3 Parameter: shmid, die Kennung
     des gemeinsamen Speicherblocks, der mit <function>shmop_open</function>
     erzeugt wurde, start gibt den Offset an, von wo ab gelesen werden soll
     und count gibt die Anzahl der zu lesenden Bytes an.
    </para>
    <para>
     <example>
      <title>Aus dem gemeinsamen Speicher lesen</title>
      <programlisting role="php">
&lt;?php
$shm_data = shmop_read($shm_id, 0, 50);
?&gt;
      </programlisting>
     </example>
    </para>
    <para>
     In diesem Beispiel werden 50 Bytes aus dem gemeinsamen Speicherblock
     in die Variable <literal>$shm_data</literal> eingelesen.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.shmop_write">
   <refnamediv>
    <refname>shmop_write</refname>
     <refpurpose>Schreibt Daten in einen gemeinsamen Speicherblock</refpurpose>
    </refnamediv>
    <refsect1>
     <title>Beschreibung</title>
      <methodsynopsis>
       <type>int</type><methodname>shmop_write</methodname>
       <methodparam><type>int</type><parameter>shmid</parameter></methodparam>
       <methodparam><type>string</type><parameter>data</parameter></methodparam>
       <methodparam><type>int</type><parameter>offset</parameter></methodparam>
      </methodsynopsis>
     <para>
      <function>shmop_write</function> schreibt Daten in einen gemeinsamen
      Speicherbereich.
     </para>
     <para>
      <function>shmop_write</function> braucht 3 Parameter:shmid, die Kennung
      des gemeinsamen Speicherblocks, der mit <function>shmop_open</function>
      erzeugt wurde, data, ein String, der in den gemeinsamen Speicher
      geschrieben werden soll und offset, der angibt, von wo ab in den
      gemeinsamen Speicherblock geschrieben werden soll.
     </para>
     <para>
      <example>
      <title>In den gemeinsamen Speicher schreiben</title>
      <programlisting role="php">
&lt;?php
$shm_bytes_written = shmop_write($shm_id, $my_string, 0);
?&gt;
      </programlisting>
     </example>
    </para>
    <para>
     In diesem Beispiel werden die Daten der Variablen <literal>$my_string</literal>
     in den gemeinsamen Speicherblock geschrieben. Die Variable
     <literal>$shm_bytes_written</literal> enthlt die Anzahl der geschriebenen Bytes.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.size">
  <refnamediv>
   <refname>shmop_size</refname>
   <refpurpose>Liefert die Grsse des gemeinsamen Speicherblocks</refpurpose>
  </refnamediv>
  <refsect1>
   <title>Beschreibung</title>
    <methodsynopsis>
     <type>int</type><methodname>shmop_size</methodname>
     <methodparam><type>int</type><parameter>shmid</parameter></methodparam>
    </methodsynopsis>
    <para>
     <function>shmop_size</function> wird benutzt, um die Grsse eines gemeinsamen
     Speicherblocks in Byte zu ermitteln.
    </para>
    <para>
     <function>shmop_size</function> bentigt shmid, die Kennung
     des gemeinsamen Speicherblocks, der mit <function>shmop_open</function>
     erzeugt wurde. Die Funktion liefert einen Integerwert zurck, welcher
     angibt, wieviele Bytes von dem gemeinsamen Speicher belegt werden.
    </para>
    <para>
     <example>
      <title>Die Grsse des gemeinsamen Speicherblocks ermitteln</title>
      <programlisting role="php">
&lt;?php
$shm_size = shmop_size($shm_id);
?&gt;
      </programlisting>
     </example>
    </para>
    <para>
     In dem Beispiel erhlt die Variable <literal>$shm_size</literal>
     die Grsse des durch <literal>$shm_id</literal> bezeichneten
     gemeinsamen Speicherblocks in Byte.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.shmop_delete">
   <refnamediv>
    <refname>shmop_delete</refname>
    <refpurpose>Einen gemeinsamen Speicherblock lschen</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>shmop_delete</methodname>
      <methodparam><type>int</type><parameter>shmid</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>shmop_delete</function> wird benutzt, um einen gemeinsamen
     Speicherbereich zu lschen.
    </para>
    <para>
     <function>shmop_delete</function> bentigt shmid, die Kennung
     des gemeinsamen Speicherblocks, der mit <function>shmop_open</function>
     erzeugt wurde. Bei Erfolg wird 1 zurckgegeben, bei Scheitern 0.
    </para>
    <para>
     <example>
      <title>einen gemeinsamen Speicherblock lschen</title>
      <programlisting role="php">
&lt;?php
shmop_delete($shm_id);
?&gt;
      </programlisting>
     </example>
    </para>
    <para>
     In diesem Beispiel wird der gemeinsame Speicherblock mit dem
     Bezeichner <literal>$shm_id</literal> gelscht.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.shmop_close">
   <refnamediv>
    <refname>shmop_close</refname>
    <refpurpose>Schliesst einen gemeinsamen Speicherblock</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>shmop_close</methodname>
      <methodparam><type>int</type><parameter>shmid</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>shmop_close</function> wird benutzt, um einen gemeinsamen
     Speicherblock zu schliessen.
    </para>
    <para>
     <function>shmop_close</function> bentigt shmid, die Kennung
     des gemeinsamen Speicherblocks, der mit <function>shmop_open</function>
     erzeugt wurde.
    </para>
    <para>
     <example>
      <title>Einen gemeinsamen Speicherblock schliessen</title>
      <programlisting role="php">
&lt;?php
shmop_close($shm_id);
?&gt;
      </programlisting>
     </example>
    </para>
    <para>
     In diesem Beispiel wird der gemeinsame Speicherblock mit dem Bezeichner
     <literal>$shm_id</literal> geschlossen.
    </para>
   </refsect1>
  </refentry>
 </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:
-->