<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.session.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'session.upload-progress.php',
    1 => 'Oturumu Karşıya Y&uuml;kleme S&uuml;reci',
    2 => 'Oturumu Karşıya Y&uuml;kleme S&uuml;reci',
  ),
  'up' => 
  array (
    0 => 'book.session.php',
    1 => 'Sessions',
  ),
  'prev' => 
  array (
    0 => 'session.customhandler.php',
    1 => '&Ouml;zel Oturum Eylemcisi',
  ),
  'next' => 
  array (
    0 => 'session.security.php',
    1 => 'Oturumlar ve G&uuml;venlik',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'reference/session/upload-progress.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="session.upload-progress" class="chapter">
 <h1 class="title">Oturumu Karşıya Yükleme Süreci</h1>


 <p class="para">
  <a href="session.configuration.php#ini.session.upload-progress.enabled" class="link">session.upload_progress.enabled</a>
  INI seçeneği etkin ise, PHP karşıya yüklenen bağımsız dosyaların karşıya
  yükleme sürecini izleyebilecektir. Bu bilgi, yükleme isteğinin kendisi için
  yararlı bir özellik değildir, ancak bir uygulama dosya yükleme sırasında,
  durumu denetim altında tutmak için ayrı bir uç noktaya (örneğin
  <abbr>XHR</abbr> aracılığıyla) bir POST isteği gönderebilir.
 </p>
 <p class="para">
  Karşıya yükleme süreci, bir yükleme devam ederken ve <a href="session.configuration.php#ini.session.upload-progress.name" class="link">session.upload_progress.name</a>
  INI ayarıyla aynı isme sahip bir değişken POST edilirken
  <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> süper küreselinde kullanılabilir olacaktır.
  PHP bu tür POST isteklerini algıladığında, <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>
  altında bir dizi oluşturur; burada anahtar, <a href="session.configuration.php#ini.session.upload-progress.prefix" class="link">session.upload_progress.prefix</a>
  ve <a href="session.configuration.php#ini.session.upload-progress.name" class="link">session.upload_progress.name</a>
  INI seçeneklerinin birleşiminden oluşur.
  Anahtar genellikle bu INI ayarlarından elde edilir. Örnek:
  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$key </span><span style="color: #007700">= </span><span style="color: #0000BB">ini_get</span><span style="color: #007700">(</span><span style="color: #DD0000">"session.upload_progress.prefix"</span><span style="color: #007700">) . </span><span style="color: #0000BB">$_POST</span><span style="color: #007700">[</span><span style="color: #0000BB">ini_get</span><span style="color: #007700">(</span><span style="color: #DD0000">"session.upload_progress.name"</span><span style="color: #007700">)];<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #0000BB">$key</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  <code class="literal">$_SESSION[$key][&quot;cancel_upload&quot;]</code> anahtarına <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>
  atayarak, sürmekte olan dosya yüklemesini iptal etmek de mümkündür. Aynı
  istekte birden fazla dosya yüklerken, bu yalnızca devam etmekte olan dosya
  yüklemesini ve bekleyen dosya yüklemelerini iptal eder, ancak başarıyla
  tamamlanmış yüklemeleri kaldırmaz. Bir yükleme bu şekilde iptal edildiğinde
  <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES</a></var> dizisindeki <code class="literal">error</code> anahtarına
  <strong><code><a href="filesystem.constants.php#constant.upload-err-extension">UPLOAD_ERR_EXTENSION</a></code></strong> atanır.
 </p>
 <p class="para">
  <a href="session.configuration.php#ini.session.upload-progress.freq" class="link">session.upload_progress.freq</a>
  ve <a href="session.configuration.php#ini.session.upload-progress.min-freq" class="link">session.upload_progress.min_freq</a>
  INI seçenekleri, karşıya yükleme süreci bilgisinin ne sıklıkta yeniden
  hesaplanması gerektiğini denetler. Bu iki ayar için uygun bir miktar dışında,
  bu özelliğin getirdiği ek bir yük neredeyse yoktur.
 </p>
 <p class="para">
  <div class="example" id="example-1">
   <p><strong>Örnek 1 - Örnek bilgi</strong></p>
   <div class="example-contents"><p>
    Karşıya yükleme süreci için dizi yapılandırma örneği
   </p></div>
   <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;form action=&quot;upload.php&quot; method=&quot;POST&quot; enctype=&quot;multipart/form-data&quot;&gt;
 &lt;input type=&quot;hidden&quot; name=&quot;&lt;?php echo ini_get(&quot;session.upload_progress.name&quot;); ?&gt;&quot; value=&quot;123&quot; /&gt;
 &lt;input type=&quot;file&quot; name=&quot;file1&quot; /&gt;
 &lt;input type=&quot;file&quot; name=&quot;file2&quot; /&gt;
 &lt;input type=&quot;submit&quot; /&gt;
&lt;/form&gt;</pre>
</div>
   </div>

   <div class="example-contents"><p>
    Oturumda saklanan veri şöyle görünür:
   </p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">"upload_progress_123"</span><span style="color: #007700">] = array(<br /> </span><span style="color: #DD0000">"start_time" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">1234567890</span><span style="color: #007700">,   </span><span style="color: #FF8000">// İstek zamanı<br /> </span><span style="color: #DD0000">"content_length" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">57343257</span><span style="color: #007700">, </span><span style="color: #FF8000">// POST içeriğinin uzunluğu<br /> </span><span style="color: #DD0000">"bytes_processed" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">453489</span><span style="color: #007700">,  </span><span style="color: #FF8000">// Alınan ve işlenen bayt miktarı<br /> </span><span style="color: #DD0000">"done" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">false</span><span style="color: #007700">,              </span><span style="color: #FF8000">// POST işleyici sonlanınca başarılı olsun olmasın true<br /> </span><span style="color: #DD0000">"files" </span><span style="color: #007700">=&gt; array(<br />  </span><span style="color: #0000BB">0 </span><span style="color: #007700">=&gt; array(<br />   </span><span style="color: #DD0000">"field_name" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"file1"</span><span style="color: #007700">,       </span><span style="color: #FF8000">// &lt;input/&gt; alanındaki isim<br />   // Aşağıdaki 3 eleman $_FILES içindekilerle aynıdır<br />   </span><span style="color: #DD0000">"name" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"foo.avi"</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">"tmp_name" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"/tmp/phpxxxxxx"</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">"error" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">"done" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">true</span><span style="color: #007700">,                </span><span style="color: #FF8000">// POST işleyici dosyayla işini bitirince true<br />   </span><span style="color: #DD0000">"start_time" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">1234567890</span><span style="color: #007700">,    </span><span style="color: #FF8000">// Dosyanın işleme alındığı zaman<br />   </span><span style="color: #DD0000">"bytes_processed" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">57343250</span><span style="color: #007700">, </span><span style="color: #FF8000">// Dosya işlenirken alınan ve gönderilen bayt miktarı<br />  </span><span style="color: #007700">),<br />  </span><span style="color: #FF8000">// Aynı istekte, karşıya yüklenmesi tamamlanmamış başka bir dosya<br />  </span><span style="color: #0000BB">1 </span><span style="color: #007700">=&gt; array(<br />   </span><span style="color: #DD0000">"field_name" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"file2"</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">"name" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"bar.avi"</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">"tmp_name" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">NULL</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">"error" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">"done" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">false</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">"start_time" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">1234567899</span><span style="color: #007700">,<br />   </span><span style="color: #DD0000">"bytes_processed" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">54554</span><span style="color: #007700">,<br />  ),<br /> )<br />);</span></span></code></div>
   </div>

  </div>
 </p>
 <div class="warning"><strong class="warning">Uyarı</strong>
  <p class="para">
   Bunun düzgün çalışması için HTTP sunucusunun isteği tamponlama özelliği
   devre dışı bırakılmalıdır, aksi takdirde PHP dosya yüklemesini yalnızca
   dosya tam olarak yüklendikten sonra görebilir. Nginx gibi sunucuların
   oldukça büyük istekleri tamponladıkları bilinmektedir.
  </p>
 </div>
 <div class="caution"><strong class="caution">Dikkat</strong>
  <p class="para">
   Karşıya yükleme süreci bilgisi, herhangi bir betik yürütülmeden önce
   oturuma yazılır. Bu nedenle oturum adını <span class="function"><a href="function.ini-set.php" class="function">ini_set()</a></span> veya
   <span class="function"><a href="function.session-name.php" class="function">session_name()</a></span> yoluyla değiştirmek, içinde karşıya
   yükleme süreci bilgisi bulunmayan bir oturum verecektir.
  </p>
 </div>

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