Kendi kendine güncelleme PHP + MySQL uygulamaları için en iyi uygulamalar nelerdir?

7 Cevap php

Masaüstü uygulamaları kendiliğinden güncelleme olması için artık oldukça standart bir uygulamadır. Mac, benim kitapta Sparkle kullanan her Apple olmayan bir program üzerinde bir anlık kazanmak olduğunu. Windows geliştiricileri için, this has already been discussed at length. Henüz kendi kendine güncelleme web uygulamaları hakkında bilgi bulamadım, ben de size yardımcı olur umarım.

Ben Wordpress veya Drupal gibi yüklü olması gerekiyordu bir web uygulaması inşa ediyorum - bir dizinde unzip, bazı sayfa yüklemek vurdu ve gitmek için hazır. ** MP olduğunu - geniş sunucu uyumluluk olması için, PHP ve MySQL kullanmak istedi ettik? Herhangi bir durumda, bu geniş çapraz platform olması gerekir. Bağlamda, bu temelde küçük işletmeler için birleşik bir web mesajlaşma uygulamasıdır. Bu Webmail'i düşünüyorum, başka bir CMS platformu değil.

Ben kendi kendine güncelleme web uygulamaları hakkında bilmek istiyorum. Her şeyden önce, (1) bu kötü bir fikir mi? Wordpress 2.7 olarak otomatik güncelleme kolay görünüyor ki, tek bir düğme olduğunu ve henüz bu korkunç, çok yanlış gidebiliriz çok yol hayal edebiliyorum. Ayrıca, web dosyaları, web sürecinin bir güvenlik delik tarafından yazılabilir olduğu bir fikir değil mi?

(2) kalkınma zaman değer mi? Orada WP dünyada yükler milyonlarca muhtemelen, bu yüzden dünya çapında adam saat milyonlarca tasarruf, muhtemelen bu kolay hale getirmek için WP ekibi aldı değerinde zamanı. Ben sadece benim yazılım birkaç bin yükler hayal edebiliyorum - zaman yatırım değerinde kendini yükseltme inşa ediyor, ya da ben ilk etapta web yazılımı indirmek ve kurmak için yeterli sofistike kullanıcıları bir yükseltme kontrol listesi ile gidebiliriz varsayabiliriz?

Bir güvenlik felaket ya da zaman kaybı değilse, o zaman (3) Ben önce yapmış kimseden önerileri arıyorum. Eğer bir sürüm tablo veritabanınızda tutmak mı? Nasıl DB yükseltmeleri yönetirim? Geri kendiliğinden güncelleme web uygulaması kapsamında kısmi yükseltme haddeleme için hangi yöntemi kullanıyorsunuz? Bir ORM katman daha kolay ya da zor hale kullanarak yaptım? Eğer sürüm değişiklikleri bir delta tutmak mı yoksa sadece her şey her zaman darbe yapmak?

Ben sizin bu konudaki düşüncelerinizi teşekkür ederiz.

7 Cevap

Açıkçası, gerçekten userbase bağlıdır yok. Kendilerini otomatik yükseltme yok PHP uygulamalarının ton vardır. Onların kullanıcılar yükseltme işlemi işlemek için yeterli teknik, ya da sadece yükseltme değil ya vardır.

Ben amacı iki adım:

1) Cidden kullanıcıların gerçekten ihtiyaç olasılığı ne kendinize sorun. Kendi kendine güncelleme ek iş haklı benimsenmesi için bir destek yeterince verecek? Eğer emin değilseniz cevap evet, sadece bunu yapmaktır.

Eğer burada soruyorsun, ben henüz bilmiyorum tahmin ediyorum. Bu durumda, ben amacı 2. adım:

2) özelliği olmayan sürüm 1.0 bırakın. Kullanıcı geri bildirim için bekleyin. Sizin kullanıcı hemen bunu öncelik hangi durumda, basit bir yükseltme işlemi için ağlayabilir. Alternatif olarak, kullanıcıların çok daha fazla endişe bazı diğer özelliği ile olduğunu görebilirsiniz.

Onlara sormadan kullanıcıların istediklerini de tahmin insanlar aslında gerekmez şeyler geliştirme çok zaman harcamak için iyi bir yoldur.

Ben zaten bu eledik varsayalım, ancak bir hizmet olarak barındırabilir. (Wordpress.com Think)

Sana pear ve set up a channel ile uygulama paketi öneririm. Kullanıcıların daha sonra standart bir arayüz (armut) aracılığıyla uygulamayı yükseltebilirsiniz. (Kullanıcıların armut üstüne çalışan otomasyon çeşit sürece) Bu tamamen otomatik değil, ama standart, bu yüzden herhangi bir sabitsysadmin onu koruyabilirsiniz.

Ben veritabanı şema değişiklikleri konusunda son zamanlarda bu düşünüyordum. Şu anda onlar revizyonlar arasında veritabanı değişiklikleri ele ettik nasıl görmek WordPress içine kazıyorum. İşte ben bugüne kadar ne gördük bu:

$wp_db_version wp-includes/version.php yüklenir. Bu değişken bir Subversion revizyon numarasına karşılık gelen, ve wp-admin/includes/schema.php değiştiği zaman güncellenir. (Muhtemelen bir kanca ile? Emin değilim.) wp-admin/admin.php yüklendiğinde, adlı WordPress seçeneği db_version veritabanından okunur. Bu sayı $wp_db_version eşit değilse, wp-admin/upgrade.php yüklenir.

wp-admin/includes/upgrade.php isimli bir fonksiyon içerir dbDelta(). dbDelta() taramaları $wp_queries ve veritabanı şema karşılaştırır (sıfırdan en son veritabanı şema oluşturacak SQL sorguları bir dize), gerekli tabloları değiştiren, böylece şema up-to-date getirilir.

upgrade.php ve $wp_db_version hedef değerlerden daha az ise, belirli bir upgrade_NNN() fonksiyonları çalışır upgrade_all() adında bir işlevi çalışır. (Veritabanı sürümü az 7499 ise yani upgrade_250(), WordPress 2.5.0 güncellemesi, çalıştırmak olacaktır.) Bu fonksiyonların her biri kendi veri göç ve nüfus işlemleri çalıştırmak, bazıları sırasında denir ilk veritabanı kurulum komut dosyası. Güzel yinelenen kodu keser.

Yani, bunu yapmanın bir yolu var.

PHP gitti ve hiçbir uyarı ile internette bazı yerden kendi dosyalarını overwrote eğer evet bir güvenlik özelliği olacaktır. Müşterinizin verilerine başkasının erişim veren - sunucusu (DNS zehirlenmesi oluştu eğer başkası tarafından hazırlanmış birisi kodu indirmek olabilir) your güncelleme sunucusuna doğru bağlandığını garantisi yok. Bu nedenle dijital imza önemli olacaktır.

PHP sadece dosyalara erişimi okuma böylece kullanıcı web dizini izinlerini ayarlayarak güncellemeleri kontrol edebilecek - Bu prosedür sadece programı ile belgelenmiş olabilir.

Bir soru (ben gerçekten cevabını bilmiyorum) kalır: Şu anda (update.php dosyanın kendisi güncelleştirilmesi gerekirse örneğin) onları kullanarak eğer dosyaların üzerine yazmasını PHP edebilir? Test etmeye değer.

Ben senin en iyi seçenek güncelleme (ler) vardır yönetici uyaracaktır bir güncelleştirme denetleme mekanizması olduğunu düşünüyorum.

Eğer söz olarak, olası güvenlik sorunları vardır. Nedeniyle yalnız olanlara, ben yapmıyorum öneririm. Bunun yerine, oldukça akıllı yükseltme komut dosyası oluşturmayı deneyin.

Sadece benim 2 sent: Ben bir güvenlik açığı olarak benim CMS içinde bir kendini otomatik güncelleme uygulamasını düşünün, böylece bu özelliği kod karar verirseniz, bu davranışının farklı düzeylerde uygulamaya düşünmelisiniz:

  • Otomatik güncelleme
  • Güncelleştirmeleri denetleyin ve haber
  • Devre dışı