<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.filesystem.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'function.flock.php',
    1 => 'flock',
    2 => '&Ouml;neri niteliğinde taşınabilir dosya kilitleme',
  ),
  'up' => 
  array (
    0 => 'ref.filesystem.php',
    1 => 'Dosya Sistemi İşlevleri',
  ),
  'prev' => 
  array (
    0 => 'function.filetype.php',
    1 => 'filetype',
  ),
  'next' => 
  array (
    0 => 'function.fnmatch.php',
    1 => 'fnmatch',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'reference/filesystem/functions/flock.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.flock" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">flock</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">flock</span> &mdash; <span class="dc-title">Öneri niteliğinde taşınabilir dosya kilitleme</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.flock-description">
  <h3 class="title">Açıklama</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>flock</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> <code class="parameter">$akım</code></span>, <span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$işlem</code></span>, <span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter reference">&$engellensin</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="para rdfs-comment">
   <span class="function"><strong>flock()</strong></span> işlevi, sanal olarak her platformda (çoğu Unix
   türevi yanında Windows da dahil) kullanılabilen basit bir okuma/yazma
   modeli oluşturmanızı mümkün kılar.
  </p>
  <p class="para">
   Kilit, <span class="function"><a href="function.fclose.php" class="function">fclose()</a></span> işlevinden başka
   <code class="parameter">akım</code> çöp toplayıcıyla toplanırken de serbest
   bırakılır.
  </p>
  <p class="para">
   PHP, tavsiye niteliğinde dosyaların tamamını kilitlemenin taşınabilir bir
   türünü destekler (yani, dosyalara erişen tüm programların dosyaları
   kilitlerken aynı yöntemi kullanmaları zorunludur, aksi takdirde
   kullandıkları yöntem çalışmayacaktır). Öntanımlı olarak, bu işlev istenen
   kilit alınıncaya kadar bekler. Bu durum aşağıda açıklanan
   <strong><code><a href="filesystem.constants.php#constant.lock-nb">LOCK_NB</a></code></strong> seçeneği ile (Windows dışındaki platformlarda)
   değiştirilebilir.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.flock-parameters">
  <h3 class="title">Bağımsız Değişkenler</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">akım</code></dt>
     <dd>
       <p class="para">Bir
dosya tanıtıcısı. Genellikle <span class="function"><a href="function.fopen.php" class="function">fopen()</a></span> kullanılarak
oluşturulur.</p>
     </dd>
    
    
     <dt><code class="parameter">işlem</code></dt>
     <dd>
      <p class="para">
       <code class="parameter">işlem</code> şunlardan biri olabilir:
       <ul class="itemizedlist">
        <li class="listitem">
         <span class="simpara">
          Paylaşımlı bir kilit (okuyucu) edinmek için
          <strong><code><a href="filesystem.constants.php#constant.lock-sh">LOCK_SH</a></code></strong>.
         </span>
        </li>
        <li class="listitem">
         <span class="simpara">
          Ayrıcalıklı bir kilit (yazıcı) edinmek için
          <strong><code><a href="filesystem.constants.php#constant.lock-ex">LOCK_EX</a></code></strong>.
         </span>
        </li>
        <li class="listitem">
         <span class="simpara">
          Bir kilidi (paylaşımlı veya ayrıcalıklı) serbest bırakmak için
          <strong><code><a href="filesystem.constants.php#constant.lock-un">LOCK_UN</a></code></strong>.
         </span>
        </li>
       </ul>
      </p>
      <p class="para">
       Kilitleme sırasında işlevin engelleme yapmasını istemiyorsanız
       yukarıdaki işlemlerden birine bir bit maskesi olarak
       <strong><code><a href="filesystem.constants.php#constant.lock-nb">LOCK_NB</a></code></strong> eklemek mümkündür (Windows&#039;ta
       desteklenmez).
      </p>
     </dd>
    
    
     <dt><code class="parameter">engellesin</code></dt>
     <dd>
      <p class="para">
       Kilidin engellemesi için isteğe bağlı üçüncü bağımsız değişkene 1 atanır
       (EWOULDBLOCK errno kuralı).
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.flock-returnvalues">
  <h3 class="title">Dönen Değerler</h3>
  <p class="para">
   Başarı durumunda <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, başarısızlık durumunda <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> döner.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.flock-examples">
  <h3 class="title">Örnekler</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Örnek 1 - <span class="function"><strong>flock()</strong></span> örneği</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$dt </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"/tmp/lock.txt"</span><span style="color: #007700">, </span><span style="color: #DD0000">"w"</span><span style="color: #007700">);<br /><br />if (</span><span style="color: #0000BB">flock</span><span style="color: #007700">(</span><span style="color: #0000BB">$dt</span><span style="color: #007700">, </span><span style="color: #0000BB">LOCK_EX</span><span style="color: #007700">)) { </span><span style="color: #FF8000">// ayrıcalıklı bir kilit elde edelim<br />    </span><span style="color: #0000BB">ftruncate</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">);  </span><span style="color: #FF8000">// dosyayı kırp<br />    </span><span style="color: #0000BB">fwrite</span><span style="color: #007700">(</span><span style="color: #0000BB">$dt</span><span style="color: #007700">, </span><span style="color: #DD0000">"Buraya bir şeyler yazalım\n"</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">fflush</span><span style="color: #007700">(</span><span style="color: #0000BB">$dt</span><span style="color: #007700">);            </span><span style="color: #FF8000">// kilidi bırakmadan önce çıkışı temizleyelim<br />    </span><span style="color: #0000BB">flock</span><span style="color: #007700">(</span><span style="color: #0000BB">$dt</span><span style="color: #007700">, </span><span style="color: #0000BB">LOCK_UN</span><span style="color: #007700">); </span><span style="color: #FF8000">// kilidi serbest bırakalım<br /></span><span style="color: #007700">} else {<br />    echo </span><span style="color: #DD0000">"Kilit edinilemedi!"</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$dt</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Örnek 2 - <strong><code><a href="filesystem.constants.php#constant.lock-nb">LOCK_NB</a></code></strong> kullanarak <span class="function"><strong>flock()</strong></span>
    </strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$fp </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">'/tmp/lock.txt'</span><span style="color: #007700">, </span><span style="color: #DD0000">'r+'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* LOCK_EX işlemi üstünde LOCK_NB'yi etkinleştirelim */<br /></span><span style="color: #007700">if(!</span><span style="color: #0000BB">flock</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #0000BB">LOCK_EX </span><span style="color: #007700">| </span><span style="color: #0000BB">LOCK_NB</span><span style="color: #007700">)) {<br />    echo </span><span style="color: #DD0000">'Kilit edinilemedi'</span><span style="color: #007700">;<br />    exit(-</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #FF8000">/* ... */<br /><br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.flock-notes">
  <h3 class="title">Notlar</h3>
  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <p class="para">
    <span class="function"><strong>flock()</strong></span> işlevi Windows altında zorunlu olarak kilitler.
    <span class="function"><strong>flock()</strong></span>, Windows&#039;ta tavsiye niteliğinde kilitleme yerine
    zorunlu kilitlemeyi kullanır. Zorunlu kilitleme, Linux ve System V tabanlı
    işletim sistemlerinde, fcntl() sistem çağrısı tarafından desteklenen olağan
    mekanizma yoluyla desteklenir: yani, söz konusu dosya setgid izin bitine
    sahipse ve grup yürütme biti temizlenmişse. Linux&#039;ta, bunun çalışması için
    dosya sisteminin de mand seçeneğiyle bağlanması gerekecektir.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <p class="para">
    <span class="function"><strong>flock()</strong></span> işlevi bir dosya tanıtıcısı gerektirdiğinden
    bir dosyayı yazmak amacıyla açarken (<span class="function"><a href="function.fopen.php" class="function">fopen()</a></span> işlevinde
    &quot;w&quot; veya &quot;w+&quot; bağımsız değişkenleri ile) içeriğini silebilmek için dosyaya
    başkalarının erişimini engellemeniz, yani özel bir kilit dosyası
    kullanmanız gerekir.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <p class="para">
    Yalnızca yerel dosyalar için <span class="function"><a href="function.fopen.php" class="function">fopen()</a></span> tarafından
    döndürülen dosya göstericilerinde veya
    <span class="function"><a href="streamwrapper.stream-lock.php" class="function">streamWrapper::stream_lock()</a></span> yöntemini uygulayan
    kullanıcı alanı akımların dosya göstericilerinde kullanılabilir.
   </p>
  </p></blockquote>
  <div class="warning"><strong class="warning">Uyarı</strong>
   <p class="para">
    Ardıl kodda <code class="parameter">akım</code> bağımsız değişkenine başka bir değer
    atanması kilidin serbest kalmasına sebep olur.
   </p>
  </div>
  <div class="warning"><strong class="warning">Uyarı</strong>
   <p class="para">
    Bazı işletim sistemlerinde <span class="function"><strong>flock()</strong></span> işlevi süreç
    seviyesinde gerçeklenmiştir. ISAPI gibi çok evreli bir API
    kullanıldığında, dosyaları aynı sunucu örneğinin paralel evrelerinde
    çalışan diğer PHP betiklerine karşı <span class="function"><strong>flock()</strong></span> üzerinden
    korumak mümkün olmayabilir!
   </p>
   <p class="para">
    <span class="function"><strong>flock()</strong></span> işlevi, <code class="literal">FAT</code> ve türevleri
    gibi artık antika olmuş dosya sistemlerinde desteklenmez ve bu ortamlarda
    daima <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> döndürür.
   </p>
  </div>
  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <p class="para">
    Windows&#039;ta, kilitleme süreci dosyayı ikinci kez açarsa, kilit kaldırılana
    kadar ikinci tanıtıcı üzerinden dosyaya erişemez.
   </p>
  </p></blockquote>
 </div>


</div><?php manual_footer($setup); ?>