• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
راهکار بروزرسانی خودکار اسکریپت ها
#1
با سلام
به نظرتون بهترین راهکار برای بروزرسانی خودکار اسکریپت/CMS که دست چندین مشتریه چیه؟
لطفا تجربیاتتون رو در اینجا به اشتراک بگذارید
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط : Y.P.Y
#2
سوال خوبیه
آپدیت خود اسکریپت و فایلها سادست، ولی وقتی پای دیتابیس میاد وسط کار کمی سخت میشه.
من هیچوقت نتونستم یه سیستم self-update خوب بنویسم، حتی برای برنامه های desktop(شاید بخاطر وسواسم) و فقط notification داخلشون تعبیه می کردم...
ولی چند تا نکته:
خود PHP توابع زیادی برای دانلود و ftp داره، ولی درنهایت باید یه اسکریپت برای اجرای عملیات update بنویسی و بهمراه فایلهای patch ت به سمت مشتری بفرستی که اجراش کنه.
البته از روش cdn/hosted library هم می تونی برای اسکریپت های سمت کلاینت استفاده کنی که معمولاً هم جواب میده

ولی بعضی از چالش هایی که ممکنه باهاش روبرو بشی ایناست:
پروفایل و نسخه بندی همه فایلها
Cache بودن فایلهای قدیمی
timeout شدن ارتباط با سرور update (یا در حین دانلود patch ها!)
permission فایلهای قدیمی و write/exc فایلهای جدید
و امثالش...
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : Maysam.m
#3
من نرم افزار رو به صورت فایلهای چند بسته deb دراوردم Big Grin
البته چون همه مشتری ها روی سرورهاشون ubuntu نصب هست این کار رو اینجوری هندل کردم.
ولی برای اپدیت شدن علاوه بر چیزهایی که یوشا گفت. باید برای دیتابیس از migrate استفاده کنی. که اسکریپت های زیادی برای اینکار توی php هست.
  پاسخ
تشکر شده توسط : Maysam.m
#4
راهکاری که دارم اینه که یه فایل آپدیت در برنامه باشه که چک کنه ببینه ورژن جدید وجود داره یا نه
اگه وجود داشت فایل ها رو دانلود کنه و فایلهایی که باید حذف بشند رو حذف کنه و بعد اکسترکت کنه و در آخر اجرا کنه.
اما اجرای فایل و تغییراتی که باید انجام بشه یه کمی سخته
یه سری فایلها باید تغییر کنند یا حذف بشند که ممکنه سطح دسترسی فایلها اجازه این کار رو نده
یه سری از جداول تغییر کردند که باید یه فایل sql براشون نوشته بشه و در سرور اجرا بشه که اجرای درست این هم خیلی مهمه
چک کردن نسخه و ساخت آپدیت برای هر نسخه یا چند نسخه هم به نظرم به همین راحتی نیست.

نقل قول:پروفایل و نسخه بندی همه فایلها
مشکل ترین بخش فکر کنم این باشه Confused
نقل قول:Cache بودن فایلهای قدیمی
بیشتر توضیح میدید؟
نقل قول:timeout شدن ارتباط با سرور update (یا در حین دانلود patch ها!)
permission فایلهای قدیمی و write/exc فایلهای جدید
برای حداقل رسوندن مشکلات این موارد چه راهکاری پیشنهاد میدید؟

نقل قول:باید برای دیتابیس از migrate استفاده کنی
وحید جان در مورد این migrate بیشتر توضیح میدی؟
این migrate رو از لاراول یه آشناییتی باهاش دارم
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط :
#5
راهی که بنده پیشنهاد می کنم استفاده از سیستم گیت است و به این صورت که یه فایل ورژن در مسیر برنامه دارید که آخرین نسخه را در خودش نگهداری می کند. برنامه را طوری می نویسید که هر چند وقت یه بار از طریق سیستم گیت روی مخزن remote را برای آخرین نسخه ارائه شده بررسی کند، اگر جدید تر وجود داشت بیاد و git pull کند.
سالهــــا مـــــى گــــــذرد، حادثه ها مى آید
انتظـــــار فـــــــرج از نیمـــــه خــــــرداد کشم

[عکس: ShowPicture.aspx?ID=52750d12-5d92-4286-9...height=100]
  پاسخ
تشکر شده توسط : Maysam.m
#6
(۱۳۹۴ شهریور ۲۱, ۱۱:۲۸ ب.ظ)shgninc نوشته: راهی که بنده پیشنهاد می کنم استفاده از سیستم گیت است و به این صورت که یه فایل ورژن در مسیر برنامه دارید که آخرین نسخه را در خودش نگهداری می کند. برنامه را طوری می نویسید که هر چند وقت یه بار از طریق سیستم گیت روی مخزن remote را برای آخرین نسخه ارائه شده بررسی کند، اگر جدید تر وجود داشت بیاد و git pull کند.

در این صورت باید یک repository شخصی ایجاد کنیم؟ به چه شکل فایل گیت را در بازه های زمانی مشخص فراخوانی کنیم؟ cronjob؟
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط :
#7
(۱۳۹۴ شهریور ۲۷, ۰۸:۰۵ ب.ظ)Maysam.m نوشته:
(۱۳۹۴ شهریور ۲۱, ۱۱:۲۸ ب.ظ)shgninc نوشته: راهی که بنده پیشنهاد می کنم استفاده از سیستم گیت است و به این صورت که یه فایل ورژن در مسیر برنامه دارید که آخرین نسخه را در خودش نگهداری می کند. برنامه را طوری می نویسید که هر چند وقت یه بار از طریق سیستم گیت روی مخزن remote را برای آخرین نسخه ارائه شده بررسی کند، اگر جدید تر وجود داشت بیاد و git pull کند.
در این صورت باید یک repository شخصی ایجاد کنیم؟ به چه شکل فایل گیت را در بازه های زمانی مشخص فراخوانی کنیم؟ cronjob؟
ببینید اگر داخل کرونجاب تعریف کنید، یعنی می خواهید خودکار انجام شود که خیلی خطرناک است مگر شما همزمان یک هاست دیگه مشابه به هاست فعلی داشته باشید که تست های خود را روی آن انجام داده و بعد از اطمینان از صحت عملکرد تغییرات، آن ها را روی انشعاب master گیت push کنید.
این راه به دلیل قابل پیش بینی نبودن تأثیرات تغییرات پیشنهاد نمی شود. بهتر این است که علاوه بر تست هایی که انجام می دهید به طور دستی عمل pull روی سرور را انجام داهید تا احینا اگر مشکل برخورد کردید در لحظه تشخیص و رفع نمایید. همچنین شنیده ام گه گیت این قابلیت را دارد که می توانید برایش تعریف کنید که قبل یا بعد از کامیت کاری انجام دهد. اگر این امکان را داشته باشد نیازی به کرپنجاب نخواهید داشت.
سالهــــا مـــــى گــــــذرد، حادثه ها مى آید
انتظـــــار فـــــــرج از نیمـــــه خــــــرداد کشم

[عکس: ShowPicture.aspx?ID=52750d12-5d92-4286-9...height=100]
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان