Aşağı bir site alarak ve bir yükseltme yapmak için kullanıcıları tekme için en iyi yöntemi nedir?

6 Cevap php

Ben insanlar insanları tekme veya bir yükseltme yapmak istediğinizde bir siteye erişim engelleme nasıl merak ve oturum açtığınız kullanıcı var

Benim bir düşünce sadece site kullanılamıyor olup olmadığını bir global dosyasında bir bool ayarı (örneğin ayarlar dosyası gibi) koymaktır. Yanlış kullanılamaz ise doğrudur, kullanılabilir. False, bir dahaki sefere kullanıcı onlar da dışarı açmış veya sadece kullanılamaz mesajı ile sunulacak sitesine erişmeye çalışır.

Ben bu yöntem ile görebilirsiniz 2 konu vardır:

  1. Kullanıcılar sadece bir uzun form doldurma bitirme ya da en kısa sürede formu göndermek gibi, (SO cevaplamak veya yeni bir soru gibi) metnin büyük bir kısmını yazıyorsanız, bu bilgiyi kaybetmek istiyorum. (Belki bu tablo veya kod için DB değişiklikleri zaten orada değişmiş olabilir, çünkü her zaman bunu kaydedilemiyor.)

  2. Olası: Yoğun bir sitede, küresel dosyasını düzenleyerek bu tasarruf ederken kısmen yüklendiği esnada o sayfa yüklendiğinde eğer PHP ayrıştırma hatalara neden olabilecek bir kaç satır daha fazla veya eğer. Ayrıca yapılandırmasına bağlı olarak, dosya üzerinde sorunları var kilitleme olabilir.

Başka bir seçenek, aynı ayarı ile veritabanında bir alan olmasıdır. Şu anda, ben genellikle ayarları için bir tablo yok, bu yüzden bu tabloda tek şey olurdu, ama ikinci sorunu engeller gibi hızlı olma görebiliyordu.

Eğer iyi çalıştı ya da başka herhangi bir fikir olduğunu kullanılan bir şey var mı?

Ben LAMP ile çalışıyorum.

6 Cevap

. Ilk çözüm olarak, biz bizim albümlerimiz-güncelleme statik sayfasına yönlendirmek (url veya yeniden) bir htaccess dosyasını kullanabilirsiniz:

RewriteRule ^updating.*$ $0 [NC,U,QSA,L]
RewriteRule .* /updating/ [NC,U,QSA,R=307,L]

Eğer yeni güncellenmiş sürümünü yayınlamadan önce site test gerekiyorsa, size engelleme istisna getirecek kullanıcı ajan belirli bir dize eklemek ve sonra. Htaccess dosyasında bu satırları kullanarak yapabilirsiniz!

RewriteRule ^updating.*$ $0 [NC,U,QSA,L]
RewriteCond %{HTTP:User-Agent} !ABC [NC]
RewriteRule .* /updating/ [NC,U,QSA,R=307,L]

So, How to attach! using firefox, create a about:config key like this: general.useragent.extra.XYZ and evaluate it by "ABC" or something, and you're done! The user agent tip credits is belong to Sohail Rashidi of iDevCenter.

Eğer belirtildiği gibi, bir sonraki alternatif çözüm bir yapılandırma bayrağın kullanıyor olabilir. ama bir $ _POST veya $ _GET dizi kümesi varsa bu kullanıcı-fairplay-tasarım durumda, sen kontrol edebilirsiniz onun / onun gelecekteki kullanımlar için (tabii, ya da geçici bir rekor) bir kullanıcı geçici tablodaki verileri kaydetmek.

Sen, belki de bir AJAX stili bir durum alanını uygulamak StackOverflow sayfalarının üst kısmında turuncu bar gibi biri, bu site 10-15 dakika içinde aşağı gidiyor ya da ne sahip olacağını kullanıcıları bilgilendirir. Ayrıca bu süre içinde oturumları devre dışı olabilir. Sonra sadece yükseltme yapmak, aşağı tamamen siteyi getirmek ve çizgi geri getirmek.

Siteniz belirli bir zamanda kesinti ve ardından günlük dosyalarına göre en az meşgul saat yükseltme gerçekleştirmek olacağını önceden kullanıcıları bilgilendirmek. Sitenizin kullanıcılara kritik iş ise hafta sonları yükseltmek için büyük iş. Yaklaşık 03:00 de bir Pazar sabahı biraz kesinti muhtemelen çok kullanıcıyı Kızdırma gitmiyor. Sadece size kesintilerini en aza indirmek böylece yükseltme yapmadan önce bir yerde ihtiyacınız olan her şeyi emin olun. Hatta bir test sunucusu üzerinde bir kuru çalışma yaptığını düşünebilirsiniz.

Ne sadece yeni kullanıcılar giriş ve ulaştığı 0 kadar kullanıcılar giriş sayısını izlemek ve ardından yükseltme izin vermiyor dersiniz?

Bu, bir Bobby's suggestion benzer. Ben bir şey aynı tür elde yolu bir sistemi aşağı çekmek için tarih / saat, ve diğer bir mesaj, veritabanında bir "config" masaya değerler bir çift koymaktır.

Tarih alanı null değil sonra, o bütün girişleri engellemek ve her sayfa yenilendiğinde, sadece sitesi Y nedenle, X dakika aşağı alınacak ve tekrar online olması gerektiğini açıklayan kullanıcılara mesajı görüntülemek için bir javascript uyarısı kullanın Z dakika içinde. Bu yapmak için bir can sıkıcı ve in-your-face yoldur, ama gerçekten onlar gerçekten uzun bir form doldurarak başlamak gerektiğini fark oldukça önemlidir.

O bakım başlangıç ​​süre sonra bu kez, daha sonra sayfa yenilendiğinde tüm kullanıcıları önyükleme. ... Yöneticileri hariç, tabii ki.

Periyodik yaklaşan bir bakım dönemi kontrol etmek için sunucuyu yoklamak için tüm müşteri alma IMO, overkill. Eğer gerçekten uzun formları sayfaların bir çift var, o zaman belki de sadece bu olanları AJAX yoklama ekleyin.

Veritabanında değerlerin bu tür olması, uygulamak kolay oldukça esnektir ve bu durum için idealdir.

Sistem oturum tabanlı ise, kolay bir yol oturumun adını değiştirmektir. Çerez adı değişecek ve tekrar oturum kadar kimse yenisini alırsınız.