darvina Tue Apr 9 15:48:14 2002 EDT Modified files: /phpdoc/it/functions shmop.xml Log: Initial translation
Index: phpdoc/it/functions/shmop.xml diff -u /dev/null phpdoc/it/functions/shmop.xml:1.5 --- /dev/null Tue Apr 9 15:48:14 2002 +++ phpdoc/it/functions/shmop.xml Tue Apr 9 15:48:14 2002 @@ -0,0 +1,368 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- EN-Revision: 1.15 Maintainer: darvina Status: ready --> +<reference id="ref.shmop"> + <title>Funzioni relative alla memoria condivisa</title> + <titleabbrev>shmop</titleabbrev> + + <partintro> + <para> + Shmop è un set di funzioni di semplice utilizzo che permettono al PHP di leggere, + scrivere, creare e cancellare i segmenti di memoria condivisa di Unix. Queste +funzioni + non sono attive sui sistemi Windows, dato che quest'ultimo non supporta la +memoria condivisa. + Per utilizzare shmop si deve compilare il PHP con il parametro --enable-shmop + nella linea di configurazione. + </para> + <note> + <simpara> + Questo modulo è sperimentale. Le API e altre informazioni possono essere + soggette a variazioni senza notifica. + </simpara> + <simpara> + Nella versione 4.0.3 di PHP queste funzioni hanno il prefisso +<literal>shm</literal> + anzichè <literal>shmop</literal>. + <!-- TODO: le vecchie funzioni shm_* funcs funzionano ancora?, sono un alias? + --> + </simpara> + </note> + <para> + <example> + <title>Descrizione delle operazioni con la memoria condivisa</title> + <programlisting role="php"> +<![CDATA[ +<?php + +// Crea un blocco di memoria condivisa di 100 byte con id 0xff3 +$shm_id = shmop_open(0xff3, "c", 0644, 100); +if(!$shm_id) { + echo "Non si riesce a creare il segmento di memoria condivisa\n"; +} + +// Ottiene la dimensione del blocco di memoria +$shm_size = shmop_size($shm_id); +echo "Dimesione blocco creato: ".$shm_size. ".\n"; + +// Scrittura di una stringa di test nella memoria condivisa +$shm_bytes_written = shmop_write($shm_id, "my shared memory block", 0); +if($shm_bytes_written != strlen("my shared memory block")) { + echo "Non si riesce a scrivere tutti i dati\n"; +} + +// Ora si rilegge la stringa +$my_string = shmop_read($shm_id, 0, $shm_size); +if(!$my_string) { + echo "Non si riesce a leggere dalla memoria condivisa\n"; +} +echo "I dati presenti nella memoria condivisa sono: ".$my_string."\n"; + +// Ora si cancella il blocco e si chiude il segmento di memoria condivisa +if(!shmop_delete($shm_id)) { + echo "Non si riesce a marcare il blocco di memoria condivisa per la +cancellazione."; +} +shmop_close($shm_id); + +?> +]]> + </programlisting> + </example> + </para> + </partintro> + + <refentry id="function.shmop-open"> + <refnamediv> + <refname>shmop_open</refname> + <refpurpose>Crea oppure apre un segmento di memoria condivisa</refpurpose> + </refnamediv> + <refsect1> + <title>Descrizione</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> + La funzione <function>shmop_open</function> può creare oppure aprire un segmento +di memoria condivisa. + </para> + <para> + La funzione <function>shmop_open</function> utilizza 4 parametri: key, indica +l'identificativo + di sistema per il segmento di memoria condivisa, questo parametro può essere +passato + come numero decimale o esadecimale. Il secondo parametro è un flag che può +assumere i seguenti valori: + <itemizedlist> + <listitem> + <simpara> + "a" per accesso (SHM_RDONLY per shmat), + usare questo flag quando occorre aprire un segmento di memoria condivisa +esistente in sola lettura + </simpara> + </listitem> + <listitem> + <simpara> + "c" per creazione (IPC_CREATE), + usare questo flag quando si ha la necessità di creare un nuovo segmento di +memoria condivisa oppure, + se esiste già un segmento con la medesima chiave, tentare di aprirlo in +lettura e scrittura + </simpara> + </listitem> + <listitem> + <simpara> + "w" per accesso in lettura & scrittura, + usare questo flag quando si deve accedere al segmento di memoria condivisa in +lettura e scrittura, + nella maggior parte dei casi si usa questo flag. + </simpara> + </listitem> + <listitem> + <simpara> + "n" per creare un nuovo segmento (IPC_CREATE|IPC_EXCL), + usare questo flag quando si vuole creare un nuovo segmento di memoria +condivisa, ma, + se già ne esiste uno con il medesimo flag, la funzione fallisce. Ciò è utile +per motivi di sicurezza, + infatti questo permette di evitare problemi di concorrenza. + </simpara> + </listitem> + </itemizedlist> + Il terzo parametro, mode, indica i permessi che si desidera assegnare + al segmento di memoria, questi sono i medesimi permessi utilizzati per + un file. Occorre passare i permessi in forma ottale, ad esempio 0644. + L'ultimo parametro è la dimensione in bytes del blocco di memoria condivisa che +si + desidera creare. + <note><simpara> + Il terzo ed il quarto parametro dovrebbero essere a 0 se si sta aprendo + un segmento di memoria esistene. Se la funzione <function>shmop_open</function> +ha + successo, sarà restituito un id da usarsi per accedere al segmento di memoria + condivisa appena creato. + </simpara></note> + </para> + <para> + <example> + <title>Creazione di un nuovo blocco di memoria condivisa</title> + <programlisting role="php"> +<![CDATA[ +<?php +$shm_id = shmop_open(0x0fff, "c", 0644, 100); +?> +]]> + </programlisting> + </example> + </para> + <para> + Questo esempio apre un blocco di memoria condivisa con id di sistema pari a +0x0fff. + </para> + </refsect1> + </refentry> + + <refentry id="function.shmop-read"> + <refnamediv> + <refname>shmop_read</refname> + <refpurpose>Legge i dati da un segmento di memoria condivisa</refpurpose> + </refnamediv> + <refsect1> + <title>Descrizione</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> + La funzione <function>shmop_read</function> legge una stringa da un blocco di +memoria condivisa. + </para> + <para> + La funzione <function>shmop_read</function> utilizza 3 parametri: shmid, che è +l'identificativo + del blocco di memoria condivisa creato da <function>shmop_open</function>; +start, che indica + l'offset da cui partire a leggere e count che indica il numero dei byte da +leggere. + </para> + <para> + <example> + <title>Lettura di un segmento di memoria condivisa</title> + <programlisting role="php"> +<![CDATA[ +<?php +$shm_data = shmop_read($shm_id, 0, 50); +?> +]]> + </programlisting> + </example> + </para> + <para> + Questo esempio legge 50 byte da un blocco di memoria condivisa e posiziona + i dati nella variabile <literal>$shm_data</literal>. + </para> + </refsect1> + </refentry> + + <refentry id="function.shmop-write"> + <refnamediv> + <refname>shmop_write</refname> + <refpurpose>Scrittura di dati nel blocco di memoria condivisa</refpurpose> + </refnamediv> + <refsect1> + <title>Descrizione</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> + La funzione <function>shmop_write</function> scrive una stringa in un segmento +di memoria condivisa. + </para> + <para> + La funzione <function>shmop_write</function> utilizza 3 parametri: shmid, che è +l'identificativo + del blocco di memoria condiviso creato da <function>shmop_open</function>; + data, che è la stringa che si vuole scrivere nel blocco di memoria e offset, + che specifica dove cominciare a scrivere nella memoria condivisa. + </para> + <para> + <example> + <title>Scrittura di un blocco di memoria condivisa</title> + <programlisting role="php"> +<![CDATA[ +<?php +$shm_bytes_written = shmop_write($shm_id, $my_string, 0); +?> +]]> + </programlisting> + </example> + </para> + <para> + Questo esempio scrive i dati della variabile <literal>$my_string</literal> nel + blocco di memoria condivisa, mentre <literal>$shm_bytes_written</literal> +contiene + il numero dei byte scritti. + </para> + </refsect1> + </refentry> + + <refentry id="function.shmop-size"> + <refnamediv> + <refname>shmop_size</refname> + <refpurpose>Restituisce la dimensione di un blocco di memoria +condivisa</refpurpose> + </refnamediv> + <refsect1> + <title>Descrizione</title> + <methodsynopsis> + <type>int</type><methodname>shmop_size</methodname> + <methodparam><type>int</type><parameter>shmid</parameter></methodparam> + </methodsynopsis> + <para> + Si utilizza la funzione <function>shmop_size</function> per ottenere la +dimensione in byte + del segmento di memoria condivisa. + </para> + <para> + La funzione <function>shmop_size</function> ha un solo parametro, shmid, che è +l'identificativo + del blocco di memoria condiviso creato da <function>shmop_open</function>; la +funzione + restituisce un numero intero che rappresenta il numero dei byte occupati + dal segmento di memoria condivisa. + </para> + <para> + <example> + <title>Come ottenere la dimensione della memoria condivisa</title> + <programlisting role="php"> +<![CDATA[ +<?php +$shm_size = shmop_size($shm_id); +?> +]]> + </programlisting> + </example> + </para> + <para> + In questo esempio si memorizza nella variabile <literal>$shm_size</literal> + la dimensione del blocco di memoria identificato da <literal>$shm_id</literal>. + </para> + </refsect1> + </refentry> + + <refentry id="function.shmop-delete"> + <refnamediv> + <refname>shmop_delete</refname> + <refpurpose>Cancella un blocco di memoria condivisa</refpurpose> + </refnamediv> + <refsect1> + <title>Descrizione</title> + <methodsynopsis> + <type>int</type><methodname>shmop_delete</methodname> + <methodparam><type>int</type><parameter>shmid</parameter></methodparam> + </methodsynopsis> + <para> + La funzione <function>shmop_delete</function> viene utilizzata per cancellare un +blocco di memoria condivisa. + </para> + <para> + La funzione <function>shmop_delete</function> ha un solo parametro, shmid, che è +l'identificativo + del blocco di memoria condiviso creato da <function>shmop_open</function>. Se la +funzione ha + successo restituisce 1, altrimenti 0. + </para> + <para> + <example> + <title>Cancellazione di un segmento di memoria condivisa</title> + <programlisting role="php"> +<![CDATA[ +<?php +shmop_delete($shm_id); +?> +]]> + </programlisting> + </example> + </para> + <para> + In questo esempio si cancella il segmento di memoria condivisa identificato da + <literal>$shm_id</literal>. + </para> + </refsect1> + </refentry> + + <refentry id="function.shmop-close"> + <refnamediv> + <refname>shmop_close</refname> + <refpurpose>Chiusura di un blocco di memoria condivisa</refpurpose> + </refnamediv> + <refsect1> + <title>Descrizione</title> + <methodsynopsis> + <type>int</type><methodname>shmop_close</methodname> + <methodparam><type>int</type><parameter>shmid</parameter></methodparam> + </methodsynopsis> + <para> + Si utilizza la funzione <function>shmop_close</function> per chiudere un +segmento di memoria condivisa. + </para> + <para> + La funzione <function>shmop_close</function> ha un solo parametro, shmid, che è +l'identificativo + del blocco di memoria condivisa creato da <function>shmop_open</function>. + </para> + <para> + <example> + <title>Chiusura di un blocco di memoria condivisa</title> + <programlisting role="php"> +<![CDATA[ +<?php +shmop_close($shm_id); +?> +]]> + </programlisting> + </example> + </para> + <para> + In questo esempio si chiude il blocco di memoria condivisa identificata da +<literal>$shm_id</literal>. + </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: +vim600: syn=xml fen fdm=syntax fdl=2 si +vim: et tw=78 syn=sgml +vi: ts=1 sw=1 +--> +