السلام عليكم .
قُمت بعمل 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
تتدلل اخ فراس.
المنصة التي تستخدمها Github تحتوي على اشياء اسمها Git WebHook، هذا الشيء يسمح لك باتمتة Automate بعض العمليات باستخدام هذه الادوات. تعريفها موجود هنا:
من خلال الرابط اعلاه ستتمكن من كتابة سكربت يقوم بتحديث الكود الموجود على السيرفر الخاص بك.
طيب ليه ماتستبدلش عن طريق
انك تمسح الملف القديم unlink
وتنقل الملف الجديد copy
او بالمصفوفة , تضع اسماء الملفات وتسحب محتوايتها ب file_get_contents ?
وعليكم السلام
هناك دوال تمرر لها مسار مجلد معين وترجع لك مصفوفة تحتوي أسماء جميع الملفات فيه يمكنك الإستفادة منها
ويمكن بحلقة تكرار ودالة copy عمل الإستدال وهذا مثال
$handle = opendir("مسار مجلد التحديث");
while (false !== ($entry = readdir($handle)))
{
if($entry!='.' && $entry!='..')
copy("مسار مجلد التحديث/$entry","مسار مجلد المشروع/$entry");
}