php-doc-en/reference/wincache/functions/wincache_lock.xml
2010-04-21 05:17:42 +00:00

123 lines
4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="function.wincache-lock" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>wincache_lock</refname>
<refpurpose>
Acquires an exclusive lock on a given key
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>wincache_lock</methodname>
<methodparam><type>string</type><parameter>key</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>isglobal</parameter><initializer>false</initializer></methodparam>
</methodsynopsis>
<para>
Obtains an exclusive lock on a given key. The execution of the current script will be blocked until the
lock can be obtained. Once the lock is obtained, the other scripts that try to request the lock by using the same
key will be blocked, until the current script releases the lock by using <function>wincache_unlock</function>.
</para>
<warning>
<simpara>
Using of the <function>wincache_lock</function> and <function>wincache_unlock</function> can cause deadlocks when
executing PHP scripts in a multi-process environment like FastCGI. Do not use these functions unless you are
absolutely sure you need to use them. For the majority of the operations on the user cache it is not necessary to
use these functions.
</simpara>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>key</parameter></term>
<listitem>
<para>
Name of the key in the cache to get the lock on.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>isglobal</parameter></term>
<listitem>
<para>
Controls whether the scope of the lock is system-wide or local. Local locks are scoped to the application pool
in IIS FastCGI case or to all php processes that have the same parent process identifier.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Using <function>wincache_lock</function></title>
<programlisting role="php">
<![CDATA[
<?php
$fp = fopen("/tmp/lock.txt", "r+");
if (wincache_lock(“lock_txt_lock”)) { // do an exclusive lock
ftruncate($fp, 0); // truncate file
fwrite($fp, "Write something here\n");
wincache_unlock(“lock_txt_lock”); // release the lock
} else {
echo "Couldn't get the lock!";
}
fclose($fp);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>wincache_unlock</function></member>
<member><function>wincache_ucache_set</function></member>
<member><function>wincache_ucache_get</function></member>
<member><function>wincache_ucache_delete</function></member>
<member><function>wincache_ucache_clear</function></member>
<member><function>wincache_ucache_exists</function></member>
<member><function>wincache_ucache_meminfo</function></member>
<member><function>wincache_ucache_info</function></member>
<member><function>wincache_scache_info</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- 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:"~/.phpdoc/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
-->