Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions reference/filesystem/functions/flock.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 75a76afb61d91f04feebc83931c5412b13682d2b Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<!-- EN-Revision: f3112c43e303fcd63c0df89798b45bfef9d49e15 Maintainer: PhilDaiguille Status: ready -->
<refentry xml:id="function.flock" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>flock</refname>
Expand Down Expand Up @@ -191,12 +190,33 @@ fclose($fp);
anticuados como <literal>FAT</literal> y sus derivados, y por lo tanto
siempre devolverá &false; en estos entornos.
</para>
<para>
En Windows, si PHP intenta ejecutar un fichero de código fuente PHP bloqueado con
<constant>LOCK_EX</constant>, el proceso quedará suspendido hasta que el fichero
sea desbloqueado. El siguiente ejemplo provocará un bloqueo mutuo (deadlock):
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
if ($argv[1] ?? null === 'child') { die(); }
$fp = fopen(__FILE__, "rb");
flock($fp, LOCK_EX);
shell_exec("php " . escapeshellarg(__FILE__) . " child");
?>
]]>
</programlisting>
</informalexample>
</para>
</warning>
<note>
<para>
En Windows, si el proceso de bloqueo abre el fichero una segunda vez, no podrá
acceder al fichero a través de este segundo manejador hasta que desbloquee el fichero.
</para>
<simpara>
En Windows, si se intenta incluir con require un fichero bloqueado con LOCK_EX,
fallará con ErrorException: require(): Read of X bytes failed with errno=13 Permission denied
</simpara>
</note>
</refsect1>

Expand Down