سؤال

أنا أعمل على نظام إدارة الملفات وترغب في تضمين إصدار تلقائي مثل ترقيم bates. إذا كان الملف بنفس الاسم موجود. فكرت في إدراج "-v0001" بين اسم الملف والتمديد وحساب عدد الإصدارات لأنها تأتي.

$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)
 }

أفكر في أنني سوف استخدم نمط Regex للتحقق مما إذا كانت النسخة موجودة.

أسئلتي هي:

  • ما هي المشاكل المحتملة لاستخدام نظام ترقيم مثل هذا؟
  • وما هي البدائل الموجودة للتعامل مع اسم الملف؟

أنا أعتني أن أكون نظام استيراد كبير، لذلك لا أريد علة المستخدم أن أعطني أسماء ملفات فريدة من نوعها إذا لم يكن لدي، ولدي خيار بما في ذلك مجموعة مختارة من مخططات الإصدار الأخرى. نظامي لديه علامات، لذلك يحتوي اسم الملف على أهمية انخفاض، لكنني أعتقد أنه لا يزال هناك بعض الأهمية.

هل كانت مفيدة؟

المحلول

في الماضي، لقد تناولت دائما نتائج mktime () قبل ملحق الملف (عند وجود اسم الملف المذكور بالفعل على النظام). لا حاجة لتحليل رقم الإصدار الحالي وتحصل أيضا على طابع زمني لطيف تمت إضافته إلى اسم الملف حتى تتمكن من معرفة أي واحد جاء أولا وعندما تم إنشاؤه. يمكنك التحقق من الملف مع الطابع الزمني المضمن قبل حفظ إذا كنت قلقا من أن شخصا آخر قد يوفر نفس الملف المسمى في نفس الثاني بالضبط على الخادم. إذا كان ذلك بالفعل مصدر قلق، فربما يجب أن تفعل الشيء نفسه مع نظامك أيضا، حتى الرقم، ثم تحقق مرة أخرى لمعرفة ما إذا كان الملف بهذا الاسم موجود بالفعل.

الطابع الزمني يحتوي على فائدة إضافية من كونها أكثر من غير المرجح أن يقوم شخص ما بتحميل ملف يدعى بالفعل مع شيء مشابه لعدد الإصدار الخاص بك، على سبيل المثال، bob_321235678.jpg مقارنة ب bob_1.jpg.

السقوط الوحيد إلى كل هذا هو أنه يمكنك في نهاية المطاف مع مجموعة من الملفات هي نفسها أكثر أو أقل، ولكن بأسماء مختلفة، لذلك قد ترغب في تحليل تلك البيانات التي تبحث بشكل دوري عن الملفات غير المستخدمة في النظام.

نصائح أخرى

طريقه بديله
هل يمكنني أن أقترح استكشاف نظام إصدار حقيقي مثل التخريب كخلفية شفافة؟ يمكنك استخدام خطافات SVN لأتمتة الالتزام وما إلى ذلك. ربما سيكون هذا بسيط وأكثر قوة.

ال الفصل "التغير الذاتية" على التخريب قد يكون Doc نقطة انطلاق جيدة لذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top