Bir dosya ve tarayıcıya çıktı Akış

3 Cevap php

Yani, bu çok daha verimli bir şey arıyorum:

<?php
ob_start();
include 'test.php';
$content = ob_get_contents();

file_put_contents('test.html', $content);

echo $content;
?>

Yukarıdaki ile ilgili problemler:

  • Tüm sayfa oluşturulur kadar istemci hiçbir şey almaz
  • Dosya çok büyük olabilir, bu yüzden oldukça bellekte her şey olurdu değil

Herhangi bir öneriniz?

3 Cevap

İlginç bir sorun; Ben daha önce bu çözmeye çalıştım sanmıyorum.

Ben size ön bakan PHP script sunucuya giden bir ikinci isteği olması gerekir düşünüyorum. Bu http://localhost/test.php için basit bir çağrı olabilir. Fopen-sarma kullanıyorsanız, bu işlenirken gibi test.php çıkışını çekmek için () fread kullanabilirsiniz ve her parça alındıktan sonra, çıktısı ekrana ve test.html dosyasına ekleyebilir.

İşte nasıl ki (untested!) görünebilir bulunuyor:

<?php
$remote_fp = fopen("http://localhost/test.php", "r");
$local_fp = fopen("test.html", "w");
while ($buf = fread($remote_fp, 1024)) {
    echo $buf;
    fwrite($local_fp, $buf);
}
fclose($remote_fp);
fclose($local_fp);
?>

Pix0r cevabı aslında o "dahil" yerine sadece idam ihtiyaç olmadıkça istediğiniz şeydir. Eğer test.php önce giriş bilgileri varsa fopen ile çağrı Örneğin, bu dosyanın içine geçmiş olsun olmaz.

Eğer gerçekten dahil gerekiyorsa, o zaman ne varsa basit yöntemdir, ancak sabit çıkış istiyorsanız, aslında gider gibi bilgileri depolayan gibi çıktılar bir şekilde dnm.php yazmak gerekir. Bildiğim kadarıyla gitmek gibi tampon ve çıkış toplamaya hem yolu yoktur.

İşte x-send-file, gerçekten kolay, verimli bir dosyayı göndermek için mod_xsendfile kullanmak gitmek.