-
March 28th, 2020, 22:16
#1
استفاده از php یا nodejs
بین php و nodejs خیلی تحقیق کردم . چیزایی که یاد گرفتم :
میدونم که Nodejs به صورت Asynchronous کد هاشو بررسی میکنه و همین موضوع باعث شده سرعتشم بیشتر باشه . و در مقابل php به صورت Synchronous کد ها رو بررسی میکنه .
همچنین اینو هم میدونم که nodejs به صورت single thread در request های سرور , عمل میکنه ( این یعنی همه در خواست ها رو با یک thread به صورت رویدادی پاسخ میده ) و در قابل php به صورت multi thread این کارو میکنه در سمت سرور > و نتیجه اینه که nodejs سریع تر و حجم بیشتری میتونه پاسخ بده نسبت به php .
تصویر تفاوت php و nodejs در عملکرد thread هاشون :
https://miro.medium.com/max/1400/0*Ekgnc6fI1kqbfvON.jpg
همچنین اینو هم تو مقالات خوندم با تفاوت های اساسی که nodejs داره به نسبت php میتونه تعداد request بالا در زمان کمتر رو منجرب بشه
تصاویر و لینک های بنچ مارک ها :
https://miro.medium.com/max/1400/1*X...PZvL3-FZhg.png
https://medium.com/@mihaigeorge.c/we...n-ebb743a5d7a3
https://jaxbot.me/pics/bubblecomparison.png
همچنین میدونم برای اجرای nodejs باید سرور اختصاصی یا مجازی حداقل داشته باشی و هزینش یکم بیشتر از php میشهو ب این موضوع هم مشکلی ندارم .
یا اینو هم میدونم که nodejs در استخدام ها و یا جامعه اماری سوالات در استک اور فلو شاید از php کمتر باشه و با اینم مشکلی ندارم .
با همه این معیار ها
من میخوام به جای php از nodejs استفاده کنم برای دو دسته از وب سایت ها :
spa یا single page aplication که به صورت تک صفحه ای کار میکنن .
و mpa یا multi page aplication مثلا فرض کنید باهاش میخوایم دیجی کالا و اینگونه سایت ها یا فروشگاه های اینترنتی پیاده سازی بشه . (و چرا اصلا یکی مثل دیجیکالا نمیره سمت node ? )
حالا به نظرتون اگر من برای ساخت mpa ها یا spa ها از این زبان کامل استفاده کنم چه مشکلی برام به جود میاد ؟
ممنون میشم بدون تعصب به من مشاوره بدین . هممون با Php کار کردیم و میدونم کمی سخته که بخوایم چیزی که سالیان سال پرستیدیم و زندگی کردیم باهاش یه شبه در اینده بزاریمش تو اولویت دوم و یا حتی کنارش بزاریم . از همه دوستان و اساتید بزرگواری تو این تاپیک کمکم میکنن بسیار تشکر میکنم .
-
-
March 28th, 2020 22:16
# ADS
-
March 29th, 2020, 00:44
#2
-
تعداد تشکر ها از be099 به دلیل پست مفید
-
March 29th, 2020, 01:34
#3
عضو دائم
پاسخ : استفاده از php یا nodejs
باسلام،
شما با PHP هم می توانید کد نویسی یا عملیات های غیر همزمان با کال بک و .. انجام بدهید، پروژه های HHVM , ReactPHP, AMP را بررسی کنید. اگر به درستی استفاده شود به صورت محسوس و باور نکردنی سرعت را احساس خواهید کرد اما خب بیشتر برنامه نویس ها چون فکر می کنند PHP به صورت ناتیو چیزی برای این کار ندارد، سراغ ـش نمیرن و سخت در اشتباه هستند.
در مورد بنچمارک ها به نظر من فقط بنچمارک هایی که سرعت خواندن و نوشتن فایل، مقدار دهی آرایه، عملیات های محاسباتی و .... دو تا زبان را محاسبه کردند معتبر است، در غیر این صورت سمت PHP باید وب سرور asynchronous و event‑driven باشد (مثل nginx) و اسکریپت هم اگر در حَد echo نیست سمت PHP هم thread باید non-blocking باشد (asynchronous نوشته شود)، اگر به این صورت نباشد نتایج کاملا فرق خواهد داشت. اما خب با این تفاسیر 99% بنچمارک ها به ما میگن Node سریعتر است.
در مورد سایت های spa به علت توانایی راه اندازی یک پروژه isomorphic (رندرگیری سمت سرور و کاربر تمام با جاوا اسکریپت) Node ایده آل شده است اما به این معنی نیست نمی توانیم یک پروژه رندرگیری فقط در سمت سرور پیاده کنیم، شما با express می توانید مسیر یابی کنید و هرچی که می خواهید رندر کنید.
در کل یادگیریش عالی و پیشنهاد می شود با توجه به نیاز پروژه می توانید انتحاب کنید، اگر خودم بخواهم یک پروژه با angular یا react و isomorphic پیاده کنم صد در صد سراغ Node خواهم رفت یا اگر نیاز به یک ارتباط real-time داشته باشد هیچ زمان PHP را انتخاب نمی کنم.
-
تعداد تشکر ها ازT.Toosi به دلیل پست مفید
-
March 29th, 2020, 12:57
#4
پاسخ : استفاده از php یا nodejs
به نظر من مهم ترین مزیت Node.js اینکه آسونی کار باهاش هست ، از نصب و راه اندازی تا ایجاد یک وب سرور ساده رو میشه توی چند دقیقه انجام داد و اینکه برای طراحی وب اپ ها ، یکی بودن زبان برنامه نویسی سمت سرور و کاربر یک مزیت خیلی خوبی هست.
در مورد asynchronous بودن Node.js، الان خیلی زبان های دیگه هم این قابلیت رو دارن ، همین PHP یا Python، منتها تفاوتی که وجود داره اینکه ، Node.js (یا به طور دقیق تر Javascript ) کلا بر مبنای این معماری پیاده سازی شده ، من خودم اخیرا توی زبان پایتون از Asyncio برای برنامه نویسی asynchronous استفاده میکنم، گاهی اوقات یکسری مشکلاتی داره که آدم اذیت میکنه و دیباگ اش زمان بره ، یا اینکه هر کتابخانه ای رو نمیشه باهاش استفاده کرد ، باید اون کتابخونه بر مبنای coroutines باشه.
از نظر کارایی هم قابلیت Single Thread بود و asynchronous باعث میشه Node.js توی انجام کارهایی که وابسطه به IO هست، کارایی بالاتری نسبت به PHP (حنی با استفاده از ماشین مجازی مثل HHVM ) داشته باشه.
اکثر وب اپ ها (مخصوصا API سروها) بیشتر کارشون مربوط به IO هست، به همین دلیل Node.js انتخاب بهتری هست، اما اگر برنامه ای می نویسید ، نیازی به پردازش بالایی داشته باشه، Node.js گزینه مناسبی نیست (به خاطر اینکه نمیتونه از تمام توان پردازنده استفاده کنه)، البته گزینه های مثل Worker threads بهتون امکان استفاده از چند رشته رو میده ، اما کارایی اش مثل زبان های که کاملا بر این اساس هست نیست. (این رو هم بگم برای انجام کارهای با پردازش بالا PHP هم گزینه ی مناسبی نیست، استفاده از زبانی مثل Go پیشنهاد میشه)
در حال حاضر از دلیلی که شرکت ها میان زبان PHP رو انتخاب میکنن، یکی راحت بودن پیدان کردن نیروی کارش هست، (به خصوص تو ایران) و همین اینکه میزبانی سایت های PHP خیلی راحت تره برای افراد، کافیه یک هاست بخرن و اسکریپت رو اپلود کنن، نیازی نیست که سرور بخرن و کانفیگ اش کنن، به جز این موارد هیچ دلیل فنی وجود نداره کسی بخواهد PHP رو به جای هز زبان برنامه نویسی مدرنی که تو ۷-۶ سال اخیر معرفی شده انتخاب کنه.
اگر میخواهید برنامه نویسی به جاوا اسکریپت رو شروع کنید، پیشنهاد من اینکه از همین اول با Typescript شروع کنید ، Typescript از نوع داده پشتیبانی میکنه و کدهاش خوانایی بالاتری داره و کتابخانه های React هم الان به طور کامل پشتیبانی میکنن ازش، (Angular پیشفرض از Typescript استفاده میشه).
ویرایش توسط firebox : March 29th, 2020 در ساعت 12:58
-
تعداد تشکر ها از firebox به دلیل پست مفید