Tarayıcı kapanış ve sunucu soru

1 Cevap php

Nasıl sunucu böyle bir kod tarayıcısını kapalı ettik biliyor ki?

<?php
$i = 0;
while (1) {
    echo "a";
    flush();
    $fp = fopen("$i.txt", "w");
    fclose($fp);
    sleep(1);
    $i++;
}
?>

I tarayıcıyı kapatmak, komut dosyası durur ve artık dosyaları oluşturulur.

1 Cevap

Böyle echo "a"; flush();" gibi çıktı bir şey, çalıştığınızda, PHP istek iptal edildi görür ve bu nedenle istek durur çünkü bu.

Sadece hızlı bir not. Zaman output bir şey bu sadece olur. PHP, başlıca içerik çıkış için çiftleşmiş için kullanılan ve tasarlanmış çünkü bu olduğunu tahmin ediyorum. Peki, içerik yere gidecek değilse, neden senaryoyu işlemeye devam?

Bunu durdurmak istemiyorsanız. Aşağıdakilerden birini yapın:

Seçenek A: Bir çıktı.

flush() ve echo hem de diğer birçok fonksiyonları ile birlikte, çıkışlar olarak kabul edilir. PHP sadece içerik göndermek için gittiğinde bir kullanıcı iptal olup olmadığını görmek için denetler, bu yüzden bir şey çıkışı olmayan bu kontrol etmez emin olun. Muhtemelen kadar güvenilir olmasa da ...

Seçenek B: kullanım ignore_user_abort(true)

Bu kullanıcı sayfayı terk bile komut çıktısı devam etmesini sağlayacağız. Daha sonra bağlantının iptal edildiğini ise connection_aborted() bulmak için ile kontrol edebilirsiniz.

Sen PHP's Connection Handling Documentation. üzerindeki tüm bu okuyabilirsiniz