PHP kullanarak bir sayfayı yenileyin


159

PHP kullanan bir sayfayı periyodik olarak nasıl yenileyebilirim? PHP ile yapamazsam, önerilen en iyi senaryo nedir?


senkronizasyondan mı (php betiğiniz ayrıştırılırken yenilemek istediğiniz bir durumla karşılaşırsınız) refrehs (meta yenileme iyi çalışır) veya bir sayfanın eşzamansız sürekli yenilenmesinden (daha çok javascript / ajax gibi) bahsediyoruz?
Najzero

Yanıtlar:


294

PHP ile yapabilirsiniz:

header("Refresh:0");

Mevcut sayfanızı yeniler ve onu başka bir sayfaya yönlendirmeniz gerekirse, aşağıdakileri kullanın:

header("Refresh:0; url=page2.php");

1
Yenileme resmi bir başlık değildir, ancak Netscape Navigator'dan bu yana birçok tarayıcı tarafından desteklenmektedir. Bu, hedef kitlenizin destekleyici tarayıcıları kullandığından emin olmak için test etmeniz gerektiği anlamına gelir.
Patanjali

5
0 kullanmak , özellikle sayfada resimleriniz varsa, sunucunuzu ve / veya yerel önbelleğinizi sürekli olarak kullanır. Hisse senedi fiyatları gibi yalnızca ekrandaki bilgileri güncellemeniz gerekiyorsa, ancak bu bilgileri bir formda veya javascript'ten kullanmıyorsanız, belki de yalnızca güncellenen bilgilerin bulunduğu bir sayfaya işaret eden ve nasıl yapılacağına uygun bir gecikmeyle bir iframe etiketi kullanın. bilgi güncel olmalıdır .
Patanjali

1
Bu, kodumda "Başlıklar zaten gönderildi" hatasına neden oluyor ... başka bir yolu var mı?
DBS

Çözüm için burayı kontrol edin ; tldr, kullanmadan önce herhangi bir çıktı veremezsinizheader();
adrian

111

In PHP kullanabilirsiniz:

$page = $_SERVER['PHP_SELF'];
$sec = "10";
header("Refresh: $sec; url=$page");

Veya sadece JavaScript'i kullanın window.location.reload().


2
Yazana başlığı ('Konum:') kullanıcıyı herhangi bir url'ye yönlendirmek için kullanılır, bunu kullanarak sayfayı yenileyemezsiniz.
Patriks

2
Pratik. Hatalısınız. bir sayfayı yenilemek için başlık ("yenileme:") kullanabilirsiniz
131

6
header("Location: ".$_SERVER['PHP_SELF']);
John Magnolia

4
Bu çözümle ilgili bir not: Siteniz bir tür güzel yönlendirme veya URL yeniden yazma (yani varsayılan olarak hemen hemen her çerçeve) uyguluyorsa $_SERVER['PHP_SELF'], tarayıcınızda gördüğünüz gerçek URL'yi değil, size doğru komut dosyası yolunu bulabilirsiniz . Bu durumda, $_SERVER['REQUEST_URI']onun yerine kullanmayı deneyin .
BadHorsie

18

Bir sayfayı PHP kullanarak periyodik olarak yenileyebilirsiniz:

<?php
    header("refresh: 3;");
?>

Bu, sayfayı her üç saniyede bir yeniler.



13

PHP içeriğini yenilemenin iki yolunu buldum:

1. HTML metaetiketini kullanarak :

echo("<meta http-equiv='refresh' content='1'>"); //Refresh by HTTP 'meta'

2. PHP yenileme hızını kullanma:

$delay = 0; // Where 0 is an example of a time delay. You can use 5 for 5 seconds, for example!
header("Refresh: $delay;"); 

2
//Refresh by HTTP META => // Refresh by HTML METAbu da yukarıdan kopyalanmış bir yanıta benziyor.
php_coder_3809625

12

Bir sayfayı yenilemenin tüm PHP yollarının yanı sıra, sayfa aşağıdaki HTML meta etiketiyle de yenilenecektir:

<meta http-equiv="refresh" content="5">

Meta yenileme konusuna bakın - "mevcut web sayfasını veya çerçeveyi belirli bir zaman aralığından sonra otomatik olarak yenileme"

Zamanı contentdeğer dahilinde ayarlayabilirsiniz .


3
bu her 0 saniyede bir yenilenecek - muhtemelen istediğiniz şey değil :)
warren

3
evet bu cevaba yorum yapıyorum: her zaman iyileştirme için yer vardır. Ve haklısın, contentsaniyeler içinde herhangi bir değere eşit ayarlayabilirsin - benim yorumum hala 0 saniyelik bir yenileme muhtemelen senin istediğin şey değil :)
warren

2
@Mathlight ve geciken yorumlardan şikayet eden başka biri. Sırf ilerlemiş olabileceğiniz için, gelecekteki bir okuyucu sorunu henüz yaşamış olabilir ve cevabınız / yorumunuz, buna meydan okuyan gecikmiş olanlar ile birlikte yine de onlarla alakalı olabilir.
Patanjali

1
@Mathlight İnsanların neden sadece bir gönderi eski olduğu için yorum yapmanın bir değeri olamayacağını düşündüğünden emin değilim. Bu düşünceden kurtulmalısınız.
Mark Kramer

"İf ifadesini oluştur" ile neyi kastediyorsunuz ?
Peter Mortensen

2

header('Location: .'); sayfayı Chrome, Firefox, Edge ve Internet Explorer 11'de yeniliyor gibi görünüyor.


Olması gerektiği gibi (bir kez): php.net/manual/en/function.header.php : "İkinci özel durum" Konum: "başlığıdır. Yalnızca bu başlığı tarayıcıya geri göndermekle kalmaz, aynı zamanda 201 veya 3xx durum kodu önceden ayarlanmadıysa tarayıcıya bir REDIRECT (302) durum kodu. "
Sz.

Ancak OP'nin istediği bu değildi. Yine de olumlu oy kullandım, çünkü bunu sonradan fark ettim, üzgünüm. Noel çok yakında! :)
Sz.

1

Bunu PHP'de yapamazsınız . Sayfa yüklendikten sonra PHP ölür ve kontrolden çıkar.

Birkaç seçeneğiniz var:

  • JavaScript kullanın
  • Yenileme meta etiketini kullanın, <meta http-equiv="refresh" content="5">

Ben düşünüyorum yenileme meta etiketi kolay ve en uygundur.


63
Yanlış, PHP'nin başlık işlevini şu şekilde kullanırsanız, sayfayı PHP kullanarak periyodik olarak yenileyebilirsiniz: header ("yenileme: 3;");
131

1
PHP'deki bir sayfayı başlık kullanarak yenileyebilirsiniz. Ayrıca META REFRESH kullanmak SEO için ideal DEĞİLDİR.
TheCarver

1
Bunun yanlış olduğunu düşünüyorum, her zaman bir yolu vardır: Sanırım bir süre sonra sayfayı php ile yenilemek isterse, php yenileme koduna sahip bir sayfaya ajax isteği gönderebilir. ama kesinlikle cevabınız iyi
Mohammad Kermani

2
Yanlış! Lütfen cevabınızı düzeltin ... Aslında bu PHP ile yapılabilir
M_R_K

1
Bu tamamen yanlış! Mümkün olan her şekilde. PHP tarafından, başlıklar (yenileme) ve tetiklenen yönlendirmeler ile yapılabilir. Görünüşe göre diğer tüm cevaplar daha iyi.
Budimir Grom

1

JavaScript kullanarak yenileyebilirsiniz. Tam sayfa yenilemesinden ziyade, içeriği bir div içinde yenilenecek şekilde verebilirsiniz. Daha sonra JavaScript kullanarak yalnızca o belirli div'i yenileyebilirsiniz ve tam sayfa yenilemeden daha hızlı çalışır.


2
Kodu eklerseniz, bu cevap biraz daha anlaşılır olabilir.
I.Am.A.Guy

1

PHP , sunucu tarafı dilidir, bu nedenle sayfayı PHP ile yenileyemezsiniz, ancak JavaScript, sayfayı yenilemek için en iyi seçenektir:

location.reload();

Ziyaret Konum yeniden () yöntemi .


1
Hahahah tamam o zaman, nasıl istersen. Bunu kontrol edin => ( wrongDomain.epl.fanxt.com ), sayfayı yüklendikten sonra 'yenileyeceğini' belirtmedi. Yenileme kararı php kodunun yürütülmesi sırasında verildiyse, o zaman php kesinlikle yenilenebilir ve kaç saniye sonra yenileneceğini seçebilir.
Mohammed Joraid

@Ahmad, PHP'nin bir özelliği olarak düşünemezsiniz, HTML'nin özelliğidir. Yani sıralamada html yanıt başlığını ayarlayarak yaparsınız. İşte bu yüzden PHP ile yapamazsınız dedim. Başka bir şey, yükledikten sonra / gerektiğinde sayfayı yenileyemezsiniz. evet, yanıtladığınız gibi birkaç saniye veya benzeri bir süre için ayarlayabilirsiniz.
Patriks

oh teknik özellikler. Başlığı belirli bir görüntüyü yenilemek için kullanmanın mümkün olduğunu düşünüyor musunuz? Yani, resmi php ile kaba olarak yayınlarsanız.
EZFrag

Gerçekten @ EZFrag, bilmiyorum, bunun nasıl mümkün olduğunu bana söyleyebilir misin?
Patriks

Ah evet, buldum. İlk başta normal bir resim etiketi denedim. Şanssız. Ama sonra, resim etiketini iframe etiketi ve işte ile değiştirdim. Görüntü otomatik olarak yenilenir. Bu, bazı sayfadaki durum resimlerimde çok yardımcı olacak :) Merak edenler için, php dosyasını iframe'in src'si olarak ayarlayıp, yenileme başlığıyla birlikte php aracılığıyla görüntüyü sunuyorum.
EZFrag

1

metaEtiketi şu şekilde yankılayın :

URL, yenilemeden sonra sayfanın yeniden yönlendirilmesi gereken yerdir.

echo "<meta http-equiv=\"refresh\" content=\"0;URL=upload.php\">";

Ancak soru yeniden yönlendirme ile ilgili değil. Yenilemekle ilgili.
Peter Mortensen

1

Bu meta etiketi PHP'ye eklemek yardımcı olabilir:

echo '<META HTTP-EQUIV="Refresh" Content="0; URL=' . $location . '">';

3
Bu kod parçacığı soruyu çözebilirken, bir açıklama eklemek, yayınınızın kalitesini artırmaya gerçekten yardımcı olur. Gelecekte okuyucular için soruyu yanıtlayacağınızı ve bu kişilerin kod önerinizin nedenlerini bilmeyebileceklerini unutmayın.
DimaSan

Ancak soru yeniden yönlendirme ile ilgili değil. Yenilemekle ilgili.
Peter Mortensen

0

Bir numara, URL'nin sonuna rastgele bir sayı eklemektir. Bu şekilde her seferinde dosyayı yeniden adlandırmanız gerekmez. Örneğin:

echo "<img src='temp.jpg?r=3892384947438'>"

Tarayıcı, rastgele sayı farklı olduğu sürece onu önbelleğe almayacaktır, ancak web sunucusu bunu göz ardı edecektir.


2
Bu, bir sayfayı periyodik olarak nasıl yeniler? Başka bir cevaba mı cevap veriyorsun?
Peter Mortensen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.