O ram verileri tutmadan sunucularına ve bir dosya akışı mümkün mü?

2 Cevap php

PHP soru (Perl 10 yıl sonra PHP yeni, arrggghhh!).

Ben başka bir sunucuya göndermek istediğiniz bir 100mb dosya var.

Ben dosyayı okumak ve "post" bu kıvrılma olmadan (bu uygulama için kıvırmak kullanamazsınız) başardı. Her şey küçük dosyalar üzerinde iyi çalışıyor.

Ancak, büyük dosyalarla, PHP bellek tahsis edememekten yakınıyor.

Hattı ile bir dosya, satır açın ve satır AYRICA satır bir yazı olarak göndermek için bir yolu var mı?

Bu şekilde hiçbir şey ram böylece benim hataların önlenmesi ve çevresinde sıkı sınırlamalar oluyor tutulur.

Chris

İşte bu büyük dosyalarda hatalar benim geçerli kod:

<?php
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);

$resp = do_post_request("/local/file.txt","http://www.mysite.com/receivedata.php");
exit;

function do_post_request($file,$url){
   $fileHandle = fopen($file, "rb");
   $fileContents = stream_get_contents($fileHandle);
   fclose($fileHandle);

   $params = array(
      'http' => array
      (
          'method' => 'POST',
          'header'=>"Content-Type: multipart/form-data\r\n",
          'content' => $fileContents
      )
   );

   $ctx = stream_context_create($params);
   $fp = fopen($url, 'rb', false, $ctx);

   $response = stream_get_contents($fp);
   return $response;
}
?>

2 Cevap

Bu fopen kullanabilir ve {[(1)}] (ya da fread alternatif olarak) dosyanın ardışık okuma.

Tek amacı standart çıktıya dosyayı temizlemesini Ancak, eğer sadece kullanabilirsiniz readfile('filename') ve ne istediğinizi tam olarak yapacağız.

evet öyle. Herhangi bir boyutu parçaları ile okuyabilirsiniz. Bu öğretici kontrol http://www.tizag.com/phpT/fileread.php