تحديث السكربت من إصدار لآخر آليًا.

السلام عليكم .

قُمت بعمل Update API لسكربت أقُوم بالعمل عليه ، تم الأمر بنجاح في نقل الملف من السيرفر المستضيف للإصدار الجديد للسيرفر الذي يريد التحديث .

وأيضًا بنجاح حين فك الأرشيف تم الأمر بنجاح ، المشكلة الآن كيف أقُوم بإعادة تنصيب الملفات ؟

فكّرت في إنشاء مصفوفة تحتوي على جميع ملفات النسخة الجديدة ، وكل ملف في هذه المصفوفة يقابله محتواه كـ :

   array("File_name"=>"Content File ","Dir_name"=>array("File_name"=>"Content"))

ثم أقُوم باستبدال المحتويات عن طريق حلقة تكرار ( loop ) ، لكن ستكون المصفوفة كبيرة جدًا جدًا جدًا حوالي 420 عنصر " ملف " .

طريقة كهذه لن تجدي ! ، فهل من طريقة أخرى؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

السلام عليكم ورحمة الله وبركاته،

اعتقد اننا يجب ان نبدأ بمعرفة ما الذي تستخدمه لادارة الكود؟ (Version Control System)؟

من الانظمة المشهورة عالمياً SVN لكنني دائماً انصح بـGit بعد استخدام هذه الانظمة ستتمكن من تحديث السكربت بشكل افضل من على منصات مثل Github أو BitBucket

وعليك السلام .

أستخدم GitHub ، لكن ما علاقة هذا بالتحديث التلقائي؟ ، شدّني جوابك! هل يمكنني استخدام الـGitHub كمركز تحديث تلقائي؟!

هلا فارس، اي نعم. تستطيع استخدام Git Hook لتحديث الكود بشكل تلقائي عند كل عملية بناء Build أو اذا كنت تستخدم آلية عمل مشابهة للتي نستخدمها بندرس.كوم، تستطيع تحديث الكود عند كل عملية merge مع master أو الBranch الذي تستخدمه للكود الحي Live Platform

آسف لا أفهم شيئًا في Git :( ، هلّا وضّحت أكثر من فضلك؟

تتدلل اخ فراس.

المنصة التي تستخدمها Github تحتوي على اشياء اسمها Git WebHook، هذا الشيء يسمح لك باتمتة Automate بعض العمليات باستخدام هذه الادوات. تعريفها موجود هنا:

من خلال الرابط اعلاه ستتمكن من كتابة سكربت يقوم بتحديث الكود الموجود على السيرفر الخاص بك.

جزاكَ الله خيرًا .

-2

يرجى تقديم نقطة اذا استفدت من الرد

طيب ليه ماتستبدلش عن طريق

انك تمسح الملف القديم unlink

وتنقل الملف الجديد copy

او بالمصفوفة , تضع اسماء الملفات وتسحب محتوايتها ب file_get_contents ?

المشكلة أن التغييرات تكُون قليلة ، وأحيانًا تكُون بها إضافات جديدة ، كون أن السكربت لا زال في طور البيتا.

وعليكم السلام

هناك دوال تمرر لها مسار مجلد معين وترجع لك مصفوفة تحتوي أسماء جميع الملفات فيه يمكنك الإستفادة منها

ويمكن بحلقة تكرار ودالة copy عمل الإستدال وهذا مثال

$handle = opendir("مسار مجلد التحديث");
while (false !== ($entry = readdir($handle)))
  {

    if($entry!='.' && $entry!='..')
            copy("مسار مجلد التحديث/$entry","مسار مجلد المشروع/$entry");
  }