PHP kabus Kalıtsal, nerede başlar?

oy
40

Ben bir kabus olduğu ortaya çeviriyor bir PHP projesi miras kaldı. İşte belirgin noktalar şunlardır:

  1. Tüm orijinal geliştiriciler bırakmış
  2. kod no sürüm kontrolü vardır
  3. Tüm geliştirme ve test yeniden adlandırma ve PHP dosyalarını düzenleyerek canlı sunucuda yapıldı. Orada index3.php vb her dosya index.php, index2.php, birden fazla kopyası vardır ve dosyaları gerçekten kullanılmakta olduğunu belirsiz
  4. Orada birden vb diğer dosyaları içeren diğer dosyaları dahil dosyalara her dosyada içerir
  5. şeyler yapmanın orada kendi yolu vardı her projede birden geliştiriciler olmuştur. Örneğin, JavaScript çerçevesinden bir Hodgepodge var, bazı veritabanı sorguları SQL, diğerleri bir XML arayüzü kullanmak ve başkalarının veritabanında usul işlevleri çağırmak.

Çünkü bu sorunların hepsinin, geliştirme bombalanmasını yavaş olduğunu. Taşması Stack benim sıkıntılarınızı havalandırma yanında, üzerinde herhangi bir önerileri nasıl bu karmaşa başlamak için? Kendimi PHP gelişimine oldukça yeni değilim, ama değişiklik ilk adımdır canlı sunucuyu bozmadan test edilebilir, böylece geliştirme ortamı bir çeşit kurma gibi görünüyor. Burada başlamak konusunda herhangi bir ipucu? testi yapmak için bir tipik yolu nedir? Masaüstümdeki sitenin yerel bir versiyonunu kurma (sunucu Linux, ancak masaüstü burada, Windows vardır) bir sürü iş gibi görünüyor. Ben test için canlı sunucuda bir alt dizin oluşturabilir veya ..? veritabanında ne olacak?

İkincisi, aslında kullanılmaktadır sunucuda hangi dosyaların izlemek için etkinleştirebilirsiniz profilleme çeşit var mı? Aslında dahil edilmiyor şeylerin yeniden adlandırılmış kopyalarını silmek istiyorum. Daha da iyisi, bir dosyanın parçaları yürütülmektedir edilmeyen anlamanın bir yolu var mı? Ben de kullanılmayan şüpheli kopyalanan işlevleri ve çöp bir sürü vardır. Benzer şekilde, karışıklık düzeltiyorum üzerinde, herhangi bir ipucu içerir için?

Eh, burada havalandırma durdurmak ve burada bulunan herkes insafına kendimi atacağım. :)

Oluştur 09/12/2008 saat 19:48
kaynak kullanıcı
Diğer dillerde...                            


27 cevaplar

oy
56
  1. Olduğu gibi her şeyden önce, sürüm kontrolü dosyaları olsun. O bitene kadar 1. geçmiş devam etmeyin.
  2. Bir test ortamı oluşturmak.
  3. dosyalarını temizleyin
Cevap 09/12/2008 saat 19:58
kaynak kullanıcı

oy
30

Bunu yaptım. Sen benim sempati var. Pasaport Bunu yaparken Dodge edemez mevcut veya başka bir nedenden dolayı değilse, burada ben yaklaşım şu şekilde silebilirsiniz:

Adım Sıfır olursa olsun ne kadar boktan, sürüm kontrolü içine elde etmektir. hatta biraz çalışır ve bir şeyler kırmak ise, çalışma durumuna geri dönmek için gerekiyor - ya da en azından neyin yanlış gittiğini anlamaya buna değişiklikleri karşılaştırın. Eğer üstlenmeden konum olarak sık, küçük check-ins yapın ve İşlerin esrarengiz ters gidince geri almak için daha az kod gerekecek. (Şeyler esrarengiz yanlış EDECEKTİR.)

Bundan sonra, veritabanına başlardım. Make sütunlar açıkça adlandırılır, her şey görece iyi normalize olduğundan emin vs.

Bir sonraki PHP kodu yapın. Kod bu kadar bir patchwork gerçekten ise, devam edip bir çerçeveye sığacak istiyorum. Içine bak CakePHP'de veya Symfony'de - ayıran endişeleri onların Raylar-imsi şekilde soruyu yapar "kod parçası gitmeli?" cevaplamak kolay. Bu küçük bir iş değil, ama pratik yaptıktan sonra, bir sanely inşa uygulamanızın olması için yarı yolda muhtemelen daha iyi konum. Bunu değiştirmek önce işlevsellik eskisiyle kapsayacak şekilde bir test yazacağınız ve değişiklikten sonra herhangi bir şey kırdı olmadığını bilirsiniz - Ayrıca, yerleşik iyi bir web çerçevenin test tesislerinin FAR daha kolay üstlenmeden olun.

Eğer veritabanı sıralanıp modellerinde model kodu ve kontrollerde kontrolör koduna sahip anladıktan sonra, o zaman, vb tek JS / AJAX kitaplıkta standartlaştırılması CSS temizlemeye gibi sunum düzey şeyler endişelenebilirsin

Bir dev ortamında gelince: Kesinlikle yerel bir dev ortamını kurmak gerekir. Orada anahtar teslimi WAMP paketleri orada vardır, yoksa Linux kutusuna yükleyebilir / VM (tavsiye VirtualBox sanallaştırma için). Ayrıca canlı sunucuyu taklit ayrı entegrasyon test ortamı olması gerekir. Canlı kod Hiçbir şey ama canlı sunucuda çalışmalıdır.

Bildiğim kadarıyla debug / profilleme araçları gibi, ben Symfony'nin günlük & profilleme bilgilerle (sadece hata ayıklama modunda) sayfalarınızda çıkageldi biraz JS araç çubuğu da dahil olmak üzere araçlar oldukça kaygan seti ile geliyor biliyoruz.

İyi şanslar.

Cevap 09/12/2008 saat 20:25
kaynak kullanıcı

oy
17

Eh, her şey sırasıyla. Sana konum durumda oldum, ve bu berbat. Sen ortaya bir geliştirme ortamı almak isteyen ve çalışan ile doğru yolda olduğunu düşünüyorum.

Geliştirme ortamı

Bu Websunucusu / script motoru / veritabanı altyapısı yığını ve büyük olasılıkla bir IDE içerecektir.

Bir İçin LAMBA yığın yükleyici , bunlardan birini kullanarak tavsiye:

Bundan başka lamba yığında okuma:

O'Reilly OnLamp sitesi

İyi için PHP IDE , bunlardan birini kullanarak tavsiye:

IBM'in Geliştirici sitesinde Madde karşılaştıran çeşitli IDE en

İçin Kaynak kontrolü sadece bildiğiniz bir şey kullanmak -, sen Team Foundation Server, SVN veya Git kullanabilirsiniz. Ben (herhangi bir acil bakım aklınıza gelebilecek için) ilk kaynak denetiminde her şeyi elde tavsiye ama sonra oldukça büyük bir revizyon yapmayı planlıyoruz.

Revizyon

Sen bile dosyaları alışmak ne bilmediğini sözü, bu da müşterinin sahte versiyonu-kontrol olarak adlandırma kuralı bir dosya kullandı. Sen ve çalışır bir geliştirme ortamı var bir kere, orada elden başlamak isteyebilirsiniz. size yardımcı olabilecek birkaç şey vardır:

  • Uygulamanız müşteriler / kullanıcılar
  • Titiz ve organize not alma
  • İyi bir günlük çerçeve

Müşterileriniz / kullanıcıların önemlidir Proje yeniyseniz gibi geliyor, çünkü onlar uygulaması (büyük olasılıkla) daha iyi nasıl davranması gerektiğini bilmek için gidiyoruz.

Titiz not alma önemlidir aslında olmak yere kadar herhangi gereksinimler / tasarım / son kullanıcı belgelerine yeniden yazma için gidiyoruz çünkü. Sen bunu yapacaksın, eğer iç görün anlamamız gerekir. Bu sistem hakkında bir şey anlamak için gidiyoruz eğer, kendini yere yazmak gerekir (veya Yığın taşması okumak yerine şu anda önceden yapılmış belgeleri incelerken olurdu) ;-)

Ve son olarak, bir günlük çerçeve önemlidir şeyleri düzeltmek gerekiyor ve size kırılır bilmiyorum şeyleri düzeltmek olamaz çünkü. Bir günlük çerçeve görüp UI yok uygulamanın bölüme size görünürlük sağlar. Günlükleri bakarak ardından uygulamanın çeşitli yerlerinde içine yerleştirilmesi ve kod yürütme zaman ve hangi sırayla iyi bir fikir verir.

Sen, uygulama çalışması gerektiğini nasıl (kağıt üzerinde) yakalayan ve bir şey kırmak değil çalışırken sonra yavaşça gereksiz dosyaları kaldırarak odaklanmak isteyeceksiniz. ayıklamaya yardımcı olmak amacıyla günlükleri bir göz atın. Müşterilerinizin şey kırık olduğunu çığlık olmadığından emin olun. notlarınız müşterilerin söylediklerini açmış oluyor ve hangi katılıyorum emin olun.

Gelecekte bu önleme

Kaynak denetime her şeyi geri tekrar kontrol edin . Umarım bu noktaya göre daha yeni, saner, daha iyi dizin yapısı varmış olur.

Yerinde bir test yapısını alın . Bu sadece bir yerde temel bir birim test çerçevesini alma ve her dağıtmak sonra bazı temel duman testleri yapıyor anlamına gelse bile, hiç olmamasından iyidir. İdeal olarak, bir test mühendisi ya da her dağıtmak sonra zaman test geçirebilirsiniz bilgili ve güvenilir müşteri olmalıdır.

Yerde bir dağıtım sürecini koyun Birden fazla geliştirici büyürse. Üretim ortamına değişiklik denetleme ilk öncelik olmalıdır. (Yapmak istediğiniz son şey doğru bu yine geçmesi mi?) Sen çevre sınırları arasında hareket için açık ve basit bir süreç olmalıdır (Dev gibi -> Test sonra Testi -> Üretim).

Cevap 09/12/2008 saat 20:23
kaynak kullanıcı

oy
16

Bir dosya grep kullanarak kullanılıyorsa, çoğu zaman anlayabilirsiniz.

grep -r "index2.php" *

Ayrıca size temizleme yardımcı olmak için PHP ayrıştırıcı kullanabilirsiniz. Burada beyan ve işlev çağrıları vardır işlevlerini yazdıran bir örnek script:

#!/usr/bin/php
<?php
class Token {
    public $type;
    public $contents;

    public function __construct($rawToken) {
        if (is_array($rawToken)) {
            $this->type = $rawToken[0];
            $this->contents = $rawToken[1];
        } else {
            $this->type = -1;
            $this->contents = $rawToken;
        }
    }
}

$file = $argv[1];
$code = file_get_contents($file);

$rawTokens = token_get_all($code);
$tokens = array();
foreach ($rawTokens as $rawToken) {
    $tokens[] = new Token($rawToken);
}

function skipWhitespace(&$tokens, &$i) {
    global $lineNo;
    $i++;
    $token = $tokens[$i];
    while ($token->type == T_WHITESPACE) {
        $lineNo += substr($token->contents, "\n");
        $i++;
        $token = $tokens[$i];
    }
}

function nextToken(&$j) {
    global $tokens, $i;
    $j = $i;
    do {
        $j++;
        $token = $tokens[$j];
    } while ($token->type == T_WHITESPACE);
    return $token;
}

for ($i = 0, $n = count($tokens); $i < $n; $i++) {
    $token = $tokens[$i];
    if ($token->type == T_FUNCTION) {
        skipWhitespace($tokens, $i);
        $functionName = $tokens[$i]->contents;
        echo 'Function: ' . $functionName . "\n";
    } elseif ($token->type == T_STRING) {
        skipWhitespace($tokens, $i);
        $nextToken = $tokens[$i];
        if ($nextToken->contents == '(') {
            echo 'Call: ' . $token->contents . "\n";
        }
    }
}
Cevap 09/12/2008 saat 23:56
kaynak kullanıcı

oy
10

Çok kötü durumda, kod tüm scrampled ve tüm ekran mantığı ve veritabanı çağrıları ile iç içe olan, ne bir PHP projesi ile ne ilgisi olduğunu yapabilir.

Ben yeniden düzenleme yaklaşımı çalışıyorum o üç başlar verdi. Bir motosiklette tepe tırmanışı ve yolun% 10 her zaman almak gibi oldu. Bu yüzden daha iyi çalışma sona erdi başka bir yaklaşım aldı.

  1. Ben bir kullanıcı olarak giriş
  2. ve her ekran ve bulabildiğim her kullanım örneği üzerinden çalıştı.
  3. Ben, statik dosyalara html kurtardı
  4. ve prosedürel çalışma ve bariz iş kuralları ile ilgili notlar aldı.

Ben 3 katı gün boyunca bunu yaptı ve sonra notlarımı alıp paydaşlarla uzun uzun konuştum.

Bazı ilk adımlar üzerinde anlaşmaya aldıktan sonra, ben iyi tutarlı tasarım ve soyutlama kullanarak, düzgün tüm html UI reimplemented. haddeleme aldıktan sonra, ben günde bir kaç ekranları yapabilirdi.

Sonra geri paydaşlara sonucunu aldı ve kullanım durumları bir grup geçti. (Onlar her neyse (sürpriz ilk uygulaması gibi değildi çünkü paydaşlar, adım 1 ve 2 gayet memnun) ve iyileştirme, aklı başında-old-app sadece kurtarma için umut vardı gibi şimdi görünüyordu.

Bu çok çalışmanın sonuna olduğu ortaya çıktı (ve aynı zamanda paydaşlar için algılanan proje riskinin ucunu.)

O yüzden şüphelenilen herkes daha az kapsamını vardı çoğaltarak, ilk mürettebat böylece aslında işin görece olarak az içerik olduğunu kendi misbegotten spagetti kadar bağlı kazanılmış olduğunu ortaya çıktı.

Ama anahtar karar orijinal kod, içerik ve yapı hem unrefactorable ve düzgün tasarlanmış yeni bir çerçeve tamamen dış görünümden çalışmaya ihtiyaç vardı.

Cevap 10/12/2008 saat 00:24
kaynak kullanıcı

oy
10
  1. Bir gelişme sunucusu kurma (Greg Hewgill belirtildiği gibi, VirtualBox ve Virtual PC iyi seçimler bunun için vardır).

  2. Mevcut site dosyalarını koyun (ilgili web sunucusu ve PHP yapılandırmaları dahil!) sürüm kontrolü içine.

  3. dosyalar kullanılmaktadır öğrenin - tüm fooN.php dosyaları kaldırarak test etmek ve hala çalışıp çalışmadığını görmek için geliştirme sunucusu kurulumu kullanır.

  4. Dua ... çok (Tamam, bu gerekli değildir, ancak bunu gerekir gibi geliyor).

Cevap 09/12/2008 saat 19:57
kaynak kullanıcı

oy
7

Eğer düşünebilirsiniz Bir şey bir geliştirme ortamında PHP "xdebug" uzantısını yüklemektir, tüm uygulama egzersiz tam olarak mümkün olduğunca (muhtemelen otomatik UI testi ile) daha sonra tüm işlev çağrıları izleme ayarlayın ve. Daha sonra / analiz uygulama tarafından kullanılan tüm dosyaları / fonksiyonlarını bulmak için xdebug izleme dosyalarını ayrıştırmak mümkün olacak.

Cevap 09/12/2008 saat 20:38
kaynak kullanıcı

oy
6

Bu iş parçacığı üzerinde diğer millet büyük tavsiye var. Ben de bu durumla karşılaşmıştım. Muhtemelen kendi kariyerinde bir anda herkes bunun kasırga çarptı gibi görünen bir projeye yürüdü.

Ben eklemek istiyorum Bir öneri diğer millet tarafından açıklanan temizleme birini yapmak için önce, sen yönetim buy-in almak gerekir olmasıdır.

  • Bu konuya ilişkin önerileri dayalı bir plan yapın.
  • Eğer bir geliştirme ve test ortamı yaratmak ve bu dışarı fiyatlandırmanız gerekir herhangi bir yeni donanım veya yazılım tarif edin.
  • Eğer kurmak ve geliştirme ve test ortamı kullanmak konusunda eğitilmesi gereken yeni hangi becerileri anlamak. Eğer bu becerileri elde etmek için gerekli zaman ve masrafları tahmin edin. Örneğin kitap veya ücretli eğitim.
  • Eğer temizlik yapmak için bir çalışma programı tahmin edin. Ne zamandır kaynak denetimi altında kodunu almak için? Ne zamandır veritabanını anlamak için? Ne zamandır PHP ve JavaScript kodu anlamak için?
  • Onun alt satıra fayda açısından amaca yöneticiniz bu sunun ve öbek. Örneğin bir zamanlar her şey bir değişiklik yapmadan veya hata ayıklama hataları daha öngörülebilir olacak daha hızlı olacak yeni işlevler yayıyoruz ve kolay olacaktır yeni personel edinmiş, temizlenir.

Bir canlı sitesi olduğu için Doğal olarak, şimdiki karmaşa ile çalışmaya devam etmeliyiz. Canlı siteyi yönetme önceliği alır, böylece temizleme çalışması bir arka plan görevi olmalıdır. Yani daha uzun sürer demektir. Bir arka plan görevi olarak orta ölçekli bir proje temizlik Deneyimlerimi genellikle oniki aya kadar altı almış. site bu süre içinde gelişmeye devam edeceğinden, tamamlanan temizleme görevlerden bazıları revize veya yeniden yapılması gerekebilir. Yönetici tüm bu çok anladığından emin olun.

yöneticisi bu pisliği temizlemek için planınıza konusunda durakladı, ya da temizlemeye değer vermezse diğer tüm geliştiricileri bu şirketten ayrıldı neden, en azından o zaman bileceksiniz!

Ben nasıl devam edileceğine dair birkaç özel öneriler vardır:

  • Tüm diğer büyük tavsiyelerin yanında, ben kullanarak öneririm Joel Testi bir kriter olarak. Temizlik için Planınız Joel Testi'nde iyi puan verecek bir iş ortamında yol açmalıdır.
  • "Cevabım Oku bilmediğiniz bir veritabanını anlamanın en iyi yolu nedir? "
  • aslında çağrılan hangi PHP sayfalarını analiz edebilirsiniz böylece web sitesinde oturum etkinleştirin. En azından vb index2.php, index3.php, index4.php, gerçekten eskimiş olan tüm söyler.
  • PHP bir işlevi vardır get_included_files()akım isteği sırasında dahil tüm dosyaların bir dizi döndürür. Bu bilgileri giriş, sen onlar web sunucusu günlüğünde görünmüyor bile, PHP dosyaları kullanımda olan öğrenebilirsiniz.
  • Gerçekten üretim sunucusu eşleşen bir test ve geliştirme ortamına sahip gerekiyor. Windows üzerinde test etmek ve Linux üzerinde dağıtmak için iyi olmaz. Bu gelişim sırasında MySQL 5.0 ve üretimde MySQL 4.0 kullanmak iyi değil. Muhtemelen (uyumlu olsa da) daha mütevazı bir donanım platformu ile alabilirsiniz.
Cevap 09/12/2008 saat 21:29
kaynak kullanıcı

oy
5

Sen sayfanın alt taraflarında bu koyarak tüm dahil / gerekli dosyaların bir listesini görebilirsiniz:

<?php var_dump(get_included_files()); ?>
Cevap 12/12/2008 saat 02:45
kaynak kullanıcı

oy
5

İsterim:

  1. Otur ve derin bir nefes alın;
  2. Çalışmak istediğiniz yeri bu gerçekten karar verin;
  3. Varsayarsak evet, o zaman, benim Sleaves sıvayıp bir anda üzerinde çalışmak ve çalışmak için bir karmaşa almak istiyorum.

Bence bir defada sadece bir göreve kendimizi sınırlamak olamayacağını biliyoruz; Ancak, içeri günlük görevler üzerinde çalışırken aynı anda tek bir karışıklık çözme işinizi sınırlayabilir.

Cevap 09/12/2008 saat 20:09
kaynak kullanıcı

oy
3

Yeniden yazma düşünün ve bir özellik şartname olarak eski siteyi kullanmak

Şaşırtıcı bir şekilde, hiç kimse bile söz bildiğim kadarıyla gördüğünüz gibi, bu, ancak başka bir alternatif vardır: kod vazgeçmek ve sadece yeni bir özellik seti şartname olarak sitenin kendi işlevini kullanmak yani (bunun için hiç ilki projesi) ve sonra yeniden inşa kurulu bir çerçeve (örneğin Symfony'de, laravel veya Drupal gibi) ile bu özellikleri göre siteyi,.

Evet, kötü kelime yaltaklanmak olanlar var yeniden yazma ... ama orada olan bu aslında gitmek için daha iyi bir yolu olduğu zaman vakalar ve bazı nedenlerden ima:

  • Eğer gelişimini PHP oldukça yeni konum, kendini
  • muhtemelen bir şeyle başlayarak daha iyi olacaktır temiz yerine miras ettik saf bok kodunun
  • son tahlilde, çoğu kullanıcı kaynak kodu umrunda değil son derece yanlış olduğunu ve onlara "çalışır" gibi görünüyorsa, onlar onlara bir şey söylemek çalışırsanız sen delisin gibi bakabiliriz
  • Eğer daha eğlenceli ve onların adı ona bağlı olması aslında yeterli bakım biri gibi görünen bir birleşik çerçevesinde kaynak revizyon kontrolü ve veritabanı tasarımı uygulamalarını pick up eğer daha uzun bir hayat yaşamak olacak

Tabii, bu pozisyonda herkes önce böyle koduyla çalışmak zorunda kaldı, ama bazen yeter ve spagetti hurda ve taze bir plaka ile başlamak daha iyidir etmiştir.

Eğer okursanız Joel'in makale , bir yeniden yazma yapmak kötü neden, sen burada sizin için geçerli değinir koşulların neredeyse hiçbiri göreceksiniz.

Cevap 10/12/2008 saat 01:02
kaynak kullanıcı

oy
2
  1. revizyon kontrol altına alın.

  2. adlandırma kuralları ve dosya / dizin yapısına karar verin.

  3. Giyinik araçları / IDE olduğundan emin olun.

  4. Eğer henüz yapmadıysanız ayrı geliştirme / Test ortamı kurma

SONRA ...

  1. Ne yazık ki, tüm bu 1, 2, 3 dosyaları arasında gezinmek ve kullanımda olan ve hangi bertaraf edilebilir hangilerinin belirlemek gerekir. Bir kaba kuvvet dışında başka hiçbir yolu dosya dosya, içinden eziyet.

  2. Ben yerinde bir RCS olsa bile, hala sık sık Bence gizli bir yere kullanılmayan komut dosyaları, .mausoleum derler ve RCS bu konumu göz ardı ne taşıyın. Güzel geri repo gitmeden lokal bir göz atmanız mümkün.

  3. Mümkün olduğu kadar ayrı bir HTML ve PHP . Bunu yeterince vurgulamıyorum! Eğer bu ince, her dosyada yapılır. Yeter ki sen PHP ve HTML ayrı parçalar olduğu gibi. Tabii ki, HTML orada burada ekolar bulunan biberli, ancak tüm testleri deneyin olacak, anahtarlar, her şey HTML bloktan ve PHP bloğuna taşındı. Bu yalnız olabilir BÜYÜK o şeyler dizildi almak için geldiğinde.

  4. kodu, temel usul ise - Onun senin durumunda varsayalım - bu ciddi bir üstlenmeden yapıyor ya sınıflara üstlenmeden önce bazı ilk temizlemek yapmak en iyisidir.

  5. Eğer dosyaları bulmak gibi / mantıksal kombine edilebilir komut Bunu yapmak. (Ben projelerini gördüm - muhtemelen sizinki aksine - hayatta kalan toplam dosya sayısı yaklaşık 1/4 başladığımız ne olduğu).

Buraya kadar geçirdikten sonra, o zaman sınıfa uygun üstlenmeden veya üstlenmeden başlayabilir.

Bol şans!

Cevap 02/03/2009 saat 18:50
kaynak kullanıcı

oy
2

Bu nasıl başa hakkında yararlı mesajların çok.

herkes söyledi tekrarlamak çalışırken olmadan:

  1. prod ortamı çalışan bir kopyasını alın. Bu bir sanal makine veya başka bir gerçek makine olabilir. Ama buna Tanrı olması gerekir. prod veritabanı başka bir kutu açıksa, siz de bir dev sürümü gerekir.
  2. versiyon kontrolüne hepsini at. Başka kutusunda. en az haftada yedeklenir biri.
  3. versiyon kontrol uygulamasındaki eserlerini dallanma nasıl bildiğinizden emin olun. Muhtemelen bunu gerekir.
  4. prod sunucu kilitli alın. Sen versiyon kontrol dışına gelmediği kendisine yapılan başka değişiklik istemiyoruz.
  5. prod sunucusuna sürüm kontrolü kodunu bırakmadan talimatlarını oluşturun. salınabilir değişimin küçük birimi bütün kod tabanı olmalıdır.

Sonraki adımlar kullanıcıları kendisine bağlı nasıl bağlıdır. sebebi ne olursa olsun çok için değiştirilemez, bir ilerici bir yaklaşım gerekir. geliştirme ve bakım hala gerçekleşmesi gerekiyorsa, o zaman bu muhtemelen tek seçenektir. uzakta yeniden yazma çabalarından böyle mods ayırmak için bu dallanma özelliği kullanmayı unutmayın.

yapıya anlamda söylemek gerekirse, temelde orada ne yanında yeni bir yapı oluşturmak zorunda. Yeni DB işleyicisi her sayfanın yüklemesi gerektiğini dosyası içerir genellikle jenerik kürsüde yer başlamak için iyi bir yerdir. Burada amaç minimal ek dosyalar yüklemek için her sayfayı söylemeden sonradan genişletilebilir yapı içermemelidir yaratmaktır.

Artık yeni dahil dosyalara üzerinde işlevselliği hareketli başlamak gerekir. Böyle bir çoklu dosya editörü veya ekran + vi (veya emacs) olarak aynı anda açık birkaç dosya, için bir yol gerekir. çeşitli yerlerde tekrarlanan yarar fonksiyonları ve kod blokları ile başlayın. kerede çok sabitleme içine telaşlanma çalışın. sorunların Bazı türleri diğer sorunlar sabit olsun tıpkı yerlere taşımak zorunda olacak. Daha sonra onlara geri geliriz.

Bir üçüncü taraf çerçeve eklemenize gerek hissetmeyin. hızla böyle bir şey ekleme komple yeniden yazmış yol açar. Bu noktada, bu sadece onun yapısını içermektedir ıslah daha bir sürü daha çalışma olacak. Yani önce o sıralamak.

Eğer işlevselliği üzerinde hareket ettikçe, dosyaların dosya eklemek yeni kullanmasını sağlamak gerekir. Eğer bunu sizin için ilk birkaç dosyaları bir süre çatışmaları takip edilecektir. Bu cesaret kırıcı ve anlamsız hissedecek ama bu muhtemelen en zor kısmıdır. Birkaç dosyaları sonra daha kolay olacaktır. Yeni bir düzine sadece biriyle içerir değiştirerek dosyaları dahil edeceğiniz yarım düzine sayfaları geçirebilirsiniz zamanlar olacaktır. Bu eylem kapak tarafı sadece silebilirsiniz dosyaları olacak olmasıdır.

Nereden bakarsanız uyarsak, düzen içerir sonunda tüm dahil dosyaları yazdım olanlardır noktaya alacak ve tamamında olacak. Bu noktada, bir üçüncü taraf çerçevesinde koyarak gibi çok daha invaziv değişiklikleri yapmak anlamlı daha kolay olacaktır.

Cevap 10/12/2008 saat 05:31
kaynak kullanıcı

oy
2
  1. Şimdi bir kod yedeğini yapın.

  2. Sürüm kontrolü.

  3. Bir test sitesi oluşturun. Apache altında çalışan sitesi var mı? Hatta kendi bilgisayarınızda Apache + PHP + MySQL yükleme ve test için kullanabiliriz.

  4. Güvenlik sorunlarının üstesinden. Site sql enjeksiyon korunmaktadır emin ve e-posta enjeksiyon gelen olun. En azından, sen veritabanı aramaları için arama yapmak ve çağrıları ekleyebilir mysql_real_escape_string()(bir MySQL veritabanı kullanarak eğer kuyu,) kod daha iyi anladıktan sonra ... Daha sonra gerçek bir düzeltme yapabilir. E-posta Enjeksiyon için ... spam kodunu filtreleyen bir filtre işlevi yazmak ve bir e-postada kullanılan tüm form alanları süzülür emin olun. (Evet bu daha spagetti kodu ekler, ancak önemli ölçüde kod refactor almaya hazır olmadan önce bir süre alacak.)

  5. Bundan sonra, artan yükseltmeleri düşündürmektedir. Sen yenisin ve kod bir higgleypiggley karmaşa, bu yüzden ... hepsini anlamak için biraz zaman alacak ve tam etki alanını anlamak için. Dolayısıyla, sadece ilave gerekenleri ekleyerek sabit gerekenleri tespit, biraz işin hakkında gidin. Bunu yaparken aşağıdaki sistem araya nasıl öğreniyorsun. Kod biraz daha iyi organize (veya organize) nasıl öğrendiğinizde, sistemin önemli bir üstlenmeden / yeniden yazma planlama başlayabilirsiniz. Hep eli kulağında yeni bir kilometre taşı var bu yüzden Umarım bileşen tarafından o bileşeni yapabilirsiniz.

Cevap 10/12/2008 saat 00:06
kaynak kullanıcı

oy
2

Ben nasıl hissettiğini biliyorum. Böyle bir projenin gelişimini miras. Bu bir yıl boyunca benimle kaldı ve olmak dürüst o beni bugünlere geliştirici yapılan için. boka diz boyu çalışma daha kişisel ilerlemesi için daha iyi bir fırsat yoktur.

İşte en yardımcı oldu noktalar şunlardır:

  • Sistemin kilit dosyalardır olduğunu belirlemek. İşinizin en onlarla yapılacaktır çünkü onları bulacaksınız
  • (Veritabanı dahil) projesinin yerel sürümünü oluşturmak ve sürüm kontrolü altında koymak
  • küçük değişikliklerle dosyaların küçük bir miktar üzerinde sadece çalışmak
  • Eğer iyice test sahip olana kadar üretim versiyonu içinde bir şey koymak ve sonra tekrar eski versiyonunu koymak için hazır olma
  • Sistemin kullanıcıları nasıl ele alındığını (oturumlar, çerezler) bulmak. süper kullanıcı oluşturun ve sistem üzerinde canlı kodunuzu test gerektiğinde sonra böyle bir blok koymak:

    if($_POST['your_registered_user_name']{
       //Your live code being tested, which will be visible only to you when you are logged in
    }
    

    Diğer kullanıcıların alışkanlık değişiklikleri hissetmek mümkün. Benim yerel makinede sistem durumunu değiştirmek mümkün iken Bu teknik bana çok yardımcı

  • test yazmak ve yazıyorsun tüm kodu için sıkı mühendislik yönergelerine

Cevap 09/12/2008 saat 23:09
kaynak kullanıcı

oy
2

Bu gerçekten bir felaket. Ama bu şey üzerinde dokunaçlarıyla bazı kesti nerede yaratıcı almaya başlamak:

  1. versiyon kontrolünü bul. Ben Git önerilir.
  2. Bir yerel kalkınma sunucusu kurun. Bu yeni olduğun başlamak için bir WAMP LAMP veya MAMP paketini bulun.
  3. giriş noktaları (index.php, vb) bulun. Bunların ne görmek için sunucu erişimi günlükleri kontrol edin.
  4. Bazı düzenli ifade kara büyü üzerinde koyulmasını ve bir içerme / tüm dosyalar üzerinde ağaç gerektiren dışarı dökümü. Ama her sakının ($ dosya) dinamik içerir sayılabilir. Bunlardan herhangi birini varsa onun etrafında kod Size ipucu vermelidir olsa da, muhtemelen dahil olur ne olduğunu bulmak için $ dosya üzerinde bazı günlük yapmanız gerekir. Biraz şansla bu şekilde tüm kullanılmayan dosyaları itlaf olabilir.
  5. fonksiyonlar ve yöntemler başka yerde kod temeli başvurulan ediliyor kontrol etmek daha regex kara büyü kullanın. bu konuda size yardımcı olabilecek bir IDE olabilir. NetBeans'i deneyin (Ben burada yardımcı olabilir yani bana, bir kez C ++ projesi planı ayrı yardımcı olması için kullanılır.)
  6. başkası cevap olarak, "gerekirse bazı sınıfları kullanılan ve bazıları get_defined_vars birlikte get_declared_classes kullanabilir ve tipleri örneğinin oluşturulmasını olduğunu görmek için gettype edebilir, değil ise, öğren." Ayrıca, sadece kod tabanında tüm yeni ifadeleri bulmak için bazı kod yazabilirsiniz.
  7. Ve daha neler ... sadece aşağı bu canavardan whittle nasıl yapabilirsiniz düşün. Ve yapabileceğiniz kodu yeniden deneyin.
Cevap 09/12/2008 saat 20:31
kaynak kullanıcı

oy
2

İşte bazı fikirler:

  • PHP ve Apache de Windows üzerinde sadece iyi çalışır. Belki sonuçta bir all-Windows kurulumu yapabilir?
  • Deneyin greping'(ya da bazı Windows alternatif) 'include' ve tüm PHP dosyalarında 'iste'. Sonra bulunan tüm dosyaların bir listesini yapmak. Klasördeki dosyaları ile listesiyle karşılaştırın. En azından BAZI başvurulmayan dosyaları kurtulmak gerekir.
  • Alternatif tüm dosya isimlerinin bir listesini yapmak ve onlar için tüm dosyaları arayın. Böyle bir dependancy grafiğinin gibi bir şey yapabiliriz.
Cevap 09/12/2008 saat 20:30
kaynak kullanıcı

oy
2

Ben miras ettik bazı klasik ASP projelerde vurmak senin noktaları tüm 5 düşünmek ve çok PHP biri ...

Tamamen kısa sürede kaynak denetiminde olsun ve bir test ortamı için VMWare, VirtualBox, vb kullanmak başkalarıyla katılıyorum.

veritabanı işlemleri onlara ekstra mantık var, özellikle de sürüm bilgisi almak için emin olun (sadece düz ekleme, güncelleme, silme). DB sürüm sonra php sayfaları daha fazla önem kazanmaktadır. Sen sql komut için tüm nesneleri oluşturmak ve kaynak kontrolü içine bu komut dosyalarını koymak gerekir. Eğer db yapısını, prosedürleri vb değiştikçe Sonra sen de bu değişikliklerin bir geçmişi var bu yüzden komut dosyalarını güncellemeniz gerekir.

Ben bakarak önermek istiyorum veritabanı tarafında neyi kullandığını olanı bulmakla gelince ApexSQL Clean . Ben birkaç yüz ASP dosyaları 200+ tablo ve yaklaşık 400 saklanan prosedürleri bir proje üzerinde kullandı. Ben kullanımda değildi 20 ya da öylesine tablolar ve depolanmış prosedürler yaklaşık% 25'ini tespit edebildi. ApexSQL Clean ile tabloları, görüş ve saklı procs birlikte bağımlılık kontrol içine php tüm dosyaları ekleyebilir. 30 günlük deneme tut ve bunu kontrol, size çok zaman kazandıracak.

web sitesi için kullanımda hangi dosyaların vardı, ben bir önceki ay için web sunucusu günlükleri vardı ve üzerinde emin değildi herhangi bir şey için onlara karşı aramalar koştu. Ben Aistina onlar erişildiğinde log dosyaları değiştirerek önerdi ne bir varyasyonu gibi de yok. Belki de dosya adı ve erişim sayısı ve her zaman bu dosya o sayısı artar yüklenen veritabanının kurulum bir tabloya gitmek zorunda. Sonra bir süre sonra sayıları üzerinden bakmak ve gidebilir belirleyebilirsiniz.

Cevap 09/12/2008 saat 20:24
kaynak kullanıcı

oy
2

Elbette ilk adım versiyonu kontrol altına koymak olacaktır. Bu şekilde en azından orijinal çalışma sürüme geri gidebilir. İkincisi o umutla böylece (, örneğin, bazı günlük dosyasına dahil ediliyor dosyasının dosya adını yazmaya vb gerektiren dahil dosyalar aslında dahil ediliyor öğrenebilirsiniz bu şekilde fonksiyonlarını üzerine yazmak iyi bir fikir olabilir index2.php bir sürü iktidar, index3.php vb

Gerekirse bazı sınıfları kullanılan ve bazıları değildir alıyorsanız, get_defined_vars ile paralel olarak get_declared_classes kullanabilir ve tipleri örneğinin oluşturulmasını olduğunu görmek için gettype olabilir, öğrenmek için.

konuyla 4 ve 5 için olduğu gibi, bu muhtemelen çözmek için biraz daha zor, ama bu umarım başlamak gerekir.

Cevap 09/12/2008 saat 20:01
kaynak kullanıcı

oy
2

Kesinlikle bir geliştirme ortamı gerekir. size windows kutuyu siteyi çalışan uğraşmak istemiyorsanız, bazı Linux dağıtımı bir VMWare görüntüsünü içeriz.

Cevap 09/12/2008 saat 19:53
kaynak kullanıcı

oy
2

Yapacağım ilk şey bir çeşit sanal makine kullanarak bir test ortamı kurulur. VirtualBox veya Virtual PC ince seçimler olacaktır. Bu yolla üretim ortamını kırma korkusu olmadan şeyler değişiyor başlayabilir. o (veritabanı ve web sunucusu ve her şey) olacaktır gibi olursa olsun bu gibi görünüyor ne kadar iş, sonunda buna değer olacaktır. En büyük avantajlardan biri sen VM kopyalamak ve size yardıma ihtiyaç bulursan, başkasına verebilir olduğunu.

Cevap 09/12/2008 saat 19:50
kaynak kullanıcı

oy
1
  1. (I budala öneriyoruz) projesinde sürüm kontrolü kullanmaya başlamak
  2. tüm kodlar için birim testleri yazma
  3. ORM kullanmaya başlamak (i ​​şiddetle doktrini tavsiye)
  4. Bazı çerçeve (i symfony / nette tavsiye) kullanmaya başlamak
  5. php kodu üstlenmeden başlamak
Cevap 02/12/2010 saat 08:54
kaynak kullanıcı

oy
1

Evet, Sürüm Kontrolü kesinlikle # 0 adım olduğunu.

Ben de iyi bir öneriyoruz Kodu Arama Aracı .

Agent Ransack oldukça iyidir (eğer pencereler üzerinde konum varsayarak) http://www.mythicsoft.com/agentransack/Page.aspx?page=download

Ben kod arama olmadan kör uçuş olurdu.

Cevap 11/01/2009 saat 20:55
kaynak kullanıcı

oy
1

Ben sadece kendim geçti.

Benim bir numaralı ipucu denemek ve ilk günden her şeyi değiştirmez etmektir. Eğer gerçekten bu şeyi düzeltmek mümkün istiyorsanız arkadaş lazım. Eğer onlar aylar için üzerinde çalıştığım şeyi nasıl değiştirileceği önermek önce meslektaşlarınız saygı ihtiyaç (yıl?).

İlk olarak, en kısa sürede sürüm kontrolü altında kodunu almak. En azından sadece dosyaları sıkıştırma ve tarihle zip dosyası adlandırma anlamına gelse bile, günlük yedekleme yapmaya başlamak, sizin için kolay olacak değilse. kimse versiyon kontrolü hakkında orada biliyorsa, CVS veya SVN üzerinde Pragmatik Programcı kitabı satın ve kendiniz ayarlayın. kitaplar bir günde okunabilir ve yukarı ve hızlı bir şekilde çalışmaya hazır hale gelir. kimsenin sürüm denetimi kullanmak isterse, birileri bir dosya kaybettiğinde kendini ... sonra repo kopyasıyla gün kaydedebilirsiniz kullanabilirsiniz. Er ya da geç başkalarının sürüm kontrolü bilgelik göreceksiniz.

İkincisi, sert belki olabilir koduna dalmak. Live it ve bir ay boyunca nefes. Eğer kodlarını öğrenmek için gidiyoruz vardır kişileri göster.

Eğer kod geçmesi olarak Üçüncüsü, bol bol not almak. kodu hakkında sizi rahatsız her şeyi not edin. Sadece kağıt üzerinde düşüncelerinizi olsun. Sen Ay Bir sonra daha sonra düzenleyebilir.

Dördüncüsü, (örneğin Xdebug gibi) bir kod profil yüklemek. Yani dosyaları ve işlevleri her sayfada denilen ediliyor ve kodunun her parça çalıştırmak için ne kadar sürdüğünü ne anlatacağım. Sorunların eklenmiyor anlamaya kullanmıyor, ve kod yavaş bitlerini bulabilirsiniz. bu ilk optimize edin.

sıkı çalışma, kod eleme ve not alma senin ay sonra, uygun bir belgeye notlarınızı açın. sizi rahatsız başka ne için farklı bölümler, mimari, önbelleğe alma, güvenlikten değişebilir. Yaptığınız her eleştiri için, daha iyi bir çözüm ve düzeltmek için ne kadar zaman alacağını üzerinde bir tahmin sunuyoruz. Bu vb tüm rakip javascript çerçeveler kurtulmak nerede

Mümkün olduğunca bu belgeyi revize. Ben bu yeterli stres değildir.

kitlenizin değil sadece kişisel tercihleri, şirketin iyiliği için yapıyoruz söyleyebilirim emin olun.

şahsen, patronun sunmak. Kurulum bunu tartışmak için bir zaman.

Onlar bunu yazılı olan için teşekkür kovabilirsin. Böyle bir şey olursa, onlar geliştirmek istemiyoruz, çünkü onlar olmadan daha iyiyiz, ve kariyerin durağanlaşacaktır.

Bunlar önerilerin tüm uygulamak isteyebilirsiniz. Büyük olasılıkla değil, ama bu mümkün. (Önerileriniz başarısız sürece) Sonra mutlu olurum.

Büyük olasılıkla onlar tavsiyelerin bir kaç uygulamak isteyeceksiniz ve bu da hiç yoktan iyidir. En azından, bu endişelerinizi kolaylaştırmak yardımcı olacağız.

test, kurulum (Windows & Linux hem desteklenir) Apache başka bir "sanal konak" gelince. Sanal Konaklar tek sunucuda birden fazla siteyi çalıştırın. dev.domain.com (günlük gelişimi için), staging.domain.com (KG insanlar hemen önce bir sürüm üzerinde test yapmak için) ve www.domain: Çoğu büyük siteler en az 3 sanal konakları (veya gerçek sunucularını) var. com (üretim sunucusu). Ayrıca farklı giriş ve şifreler ile veritabanının kurulum dev evreleme ve üretim versiyonları, yanlışlıkla onları karıştırmayın bu yüzden.

Alternatif bir çözüm Linux sunucusunda her geliştiriciye kendi sanal konak vermek olacaktır ve bunlar samba kullanarak FTP / SCP veya ağ paylaşımı çalışabilir.

İyi şanslar!

Cevap 11/12/2008 saat 03:29
kaynak kullanıcı

oy
0

Diğer insanlar söylediler harika şeyler yanı sıra, aktif olarak kullanılıyor hangi dosyalarını bir ilk geçiş olsun, kendi dev sunucusu (veya hatta bir üretim sunucusu üzerindeki APC veya eAccelerator gibi bir işlem kodu önbellek yükleyebilir, bu kırmayacak şey). Ardından, dev sunucuda web uygulaması etrafında tıklayın (veya kullanıcıların üretim sunucusunda yapalım).

Şimdi önbellek yöneticisi sayfasında önbelleğe dosyalar listesine bakın. Bir dosya işlem kodu önbellek tarafından önbelleğe alındığından olarak listede yoksa, o şey tarafından yükleniyor değil iyi bir şans var.

Bu bir bütün çözüm değil, ancak her dizin (örneğin index.php, index2.php, vb) 10 index.php dosyaları varsa, en azından uygulamanıza tarafından kullanılıyor hangisinin bileceksiniz.

Cevap 11/12/2008 saat 03:35
kaynak kullanıcı

oy
0

Harper Shelby söylediklerini yapın ...

Ama, ben de bunu temizlemek için yönetim desteği alamazsanız, bu bir nedeni böyle olabilir gerçeğini kabul isteyebilirsiniz eklersiniz. ... Sadece söylüyorum. ;-)

Cevap 09/12/2008 saat 20:29
kaynak kullanıcı

oy
0

sitede ayrıntılı istatistikleri almak ve giriş ve çıkış noktaları nerede olduğunu bulmak için deneyin. İyi bir yolu dosyaları (çekti ediliyor içeren görmek için bu dosyaların içine bakmak sonra ve) üst kapalı vurmak ediliyor ne olduğunu öğrenmek için.

Cevap 09/12/2008 saat 19:58
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more