Otomatik dosya sürüm Tuzaklar?

2 Cevap php

Ben bir dosya yönetim sistemi üzerinde çalışıyorum ve aynı adı taşıyan bir dosya varsa bu tür bates numbering olarak otomatik bir sürüm dahil etmek istiyoruz. Ben ve dosya adı uzantısı arasında bir "-v0001" ekleme ve onlar içeri gibi sürümleri sayı sayma düşündüm

$basename = pathinfo($filename, PATHINFO_BASENAME);
$fname = pathinfo($filename, PATHINFO_FILENAME);

 while (filenameExists($basename)) {
     //look for existing -vnnnn (at end of file name)
     if (versioningExists($fname)) {       
         //roll number ahead, set bates number
     } else {
         //start bates numbering at 1    
     }
     //insert bates version number (str_pad)
 }

Ben sürüm varsa kontrol etmek için bir regex desen kullanmak istiyorsunuz düşünüyorum.

Benim sorular şunlardır:

  • What are the potential problems of using a numbering system like this?
  • And what alternatives are there for dealing with filename versioning?

Bu bir kitle ithalat sistem olmak isteyen, o yüzden ben yoksa bana benzersiz dosya isimlerini vermek için bug kullanıcıyı istemiyorum, ve ben diğer sürüm planlarının bir seçim dahil seçeneği var. Benim sistem etiketleri vardır, bu yüzden dosya bir azalma öneme sahiptir, ama bazı önemi hala var olduğunu düşünürdüm.

2 Cevap

Geçmişte hep sadece dosya uzantısı önce mktime () (dediği zaman dosya adı zaten sistemde var) sonuçlarına tacked. Oluşturulduğu zaman bir ilk geldiği anlatmak ve böylece geçerli sürüm numarası için ayrıştırmak ve de güzel bir zaman damgası almak için gerek dosya adına eklenir. Başkasının sunucuda aynı tam saniyede aynı adlı dosyayı kaydetmek olabilir endişe eğer kaydetmeden önce dahil damgası ile dosya için kontrol edebilirsiniz. Bu gerçekten bir endişe ise, muhtemelen, numarası, yanı sıra sistem ile aynı yapmalıyım, o isimde bir dosya zaten varsa görmek için tekrar kontrol edin.

Damgası örneğin, birisi zaten sürüm numarasına benzer bir şey adında bir dosya yükleyerek, bob_321235678.jpg bob_1.jpg ile karşılaştırıldığında çok daha olası olmanın yararı vardır.

Bütün bunlara bir düşüşünü sisteminden kullanılan dosyalar değil arıyor periyodik verileri ayrıştırmak isteyebilirsiniz, böylece farklı isimler ile daha fazla veya daha az aynı olmakla dosyaları bir demet ile sona olduğunu.

Alternative approach
May I suggest exploring a true versioning system as subversion as a transparent backend? You could use svn hooks to automate commits and so on. Maybe this would be simple and more robust.

"Autoversioning" chapter on the subversion doc bunun için iyi bir başlangıç ​​noktası olabilir.