PDA

View Full Version : سوال: استفاده از php یا nodejs



<?php?>
شنبه 09 فروردین 1399, 21:05 عصر
بین 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*XGTOfo9taLfePZvL3-FZhg.png
https://medium.com/@mihaigeorge.c/web-rest-api-benchmark-on-a-real-life-application-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 کار کردیم و میدونم کمی سخته که بخوایم چیزی که سالیان سال پرستیدیم و زندگی کردیم باهاش یه شبه در اینده بزاریمش تو اولویت دوم و یا حتی کنارش بزاریم . از همه دوستان و اساتید بزرگواری تو این تاپیک کمکم میکنن بسیار تشکر میکنم .

Muhammad-Ali
یک شنبه 10 فروردین 1399, 04:49 صبح
https://www.swoole.co.uk
https://reactphp.org

در مورد multi-thrading هم کمی بیشتر تحقیق کن و ببین در php و nodejs چطور بکار میره... با مطرح شدن میکروسرویس ها امروزه یک اپلیکیشن می‌تونه از زبانها و تکنولوژی های مختلف در آن واحد بهره بگیره...
موفق باشی

plague
یک شنبه 10 فروردین 1399, 17:10 عصر
پردازش همه ریکوئست ها با یک ترد میتونه باعث بشه یک پروسس سنگین همه منابع cpu رو مصرف کنه در شرایط خاصی (معمولا به دلیل بهینه نبودن کد نویسی و اشتباه برنامه نویس ) و باعث بشه برنامه نتونه تسک ها/ریکوئست های دیگه رو پردازش کنه و کل اپ فلج بشه
برای همین برای اپ های سنگین معمولا توصیه نمیشه
بازار کارش تو ایران کوچیکه نسبتا و برنامه نویس متخصص کمه برا همین خیلی از مشتری ها نمیخان با این زبان نوشته بشه (به دلیل هزینه سرور و مشکل پیدا کردن برنامه نویس در صورتی که برنامه نویس فعلی به دلیلی از پروژه کنار رفت )
کار با node خیلی لذت بخشه ولی من معمولا در کنار php ازش استفاده میکنم برای تسک های خاص

<?php?>
یک شنبه 10 فروردین 1399, 21:44 عصر
با تشکر
شما به این نکته اشاره کردید :

یک پروسس سنگین همه منابع cpu رو مصرف کنه در شرایط خاصی (معمولا به دلیل بهینه نبودن کد نویسی و اشتباه برنامه نویس ) و باعث بشه برنامه نتونه تسک ها/ریکوئست های دیگه رو پردازش کنه و کل اپ فلج بشه




سوالم اینه که اگر داخل php یک ترد برای یک رکوئست تمام cpu رو بنا بر هر دلیل مصرف بکنه ( مثل همین مثالی که برای مصرف cpu برای nodejs خودتون زدید ) > اون وقت php هم نمیتونه به request های بعدی که میاد سمت سرور پاسخ بده

بار ها دوستان به صورت سر بسته دارن میگن که Nodejs نمیتونه فشار زیاد روی cpu رو مدیریت کنه > منظور دقیق از فشار رو cpu چه کار هایی هست ؟
یعنی اگه باهاش گیم انلاین بزنیم ؟ یا ویرایش تصاویر انلاین > یا منظورشون همین عملیات ریاضی هست که همه زبان ها دارنانجام میدن > مثلا اگه باهاش یه app حسابداری انلاین بزنیم به cpu فشار میاره و نمیتونه مدیریت کنه ؟

ممنون از توضیحاتتون

plague
دوشنبه 11 فروردین 1399, 04:24 صبح
نود همه رکوئست ها / تسک ها رو با یک ترد هندل میکنه
در نتیجه وقتی یک تسک سنگین در دست اجرا باشه ممکنه نتونه بقیه تسک ها / رکوئیست ها رو پاسخگو بشه

ولی توی php هر رکوئست رو یک ترد مجزا هندل میکنه

البته من تخصصم node نیست اگه تو خود بخش نود بپرسی یه دوست خیلی حرفه هست که البته خیلی سر نمیزنه ولی شاید بتونه بهتر پاسخ بده مطئنا راهکار هایی برای این موارد داره


کارهای سنگینی که صحبتشون میشه
کارهایی مثل دستکاری تصاویر یا ویدئو منظوره ...نه محسابات ریاضی
یجورایی میشه گفت همونچیزایی که ممکنه کامپیوتر خودت رو سنگین و کند کنه

<?php?>
دوشنبه 11 فروردین 1399, 04:57 صبح
میتونید ایدیشو برام خصوصی بفرستید تا براشون پیام بزارم
تشکر بابت زحماتتون

plague
دوشنبه 11 فروردین 1399, 21:26 عصر
https://barnamenevis.org/member.php?8250-cybercoder

ghasemihesar
جمعه 26 اردیبهشت 1399, 18:43 عصر
سرعت node خیلی بیشتر از php هست و بهترین گزینه برای ساخت پیامرسان ها هست ولی پیشنهاد من این هست که فقط اگر در node حرفه ای هستید دست به این کار بزنید ، چون منابع آموزشی نود خیلی کم هست

cybercoder
یک شنبه 25 خرداد 1399, 15:11 عصر
قطعا nodejs به شما امکانات بیشتری خواهد داد. برای کنترل پردازش ها بایستی از node-cluster یا پروسس منیجرهایی نظیر pm2 یا phusion passenger استفاده کنید تا بتوانید کلاستری از پروسس های بالانس شده روی هسته های مختلف اجرا کنید و در نهایت از nginx یا وب سرور دیگری بالانس را بر اساس دیسیپلین مورد نظرتان استفاده کنید.
بنده بیش از ۵ سال است که با php کار نکرده ام و اطلاع ندارم که آیا وب سوکت ها را می توان با php پیاده کرد یا می تواند پارالل پروسسینگ انجام بدهد و ...

در ۵ سال اخیر کلیه پروژه های بنده با Node.JS پیاده شده و سمت فرانت هم React یا React-native و ... بسته به نوع پلتفرم کلاینت .

plague
یک شنبه 25 خرداد 1399, 22:00 عصر
پیاده کردن وب سوکت با php ممکنه چند کتابخونه هست برای اینکار ... ولی نمیدونم چیکار میکنن under the hood ! فکر نمیکنم راهکاری که php به صورت نیتیو پشتیبانی کنه باشه


در ۵ سال اخیر کلیه پروژه های بنده با Node.JS پیاده شده و سمت فرانت هم React یا React-native و ... بسته به نوع پلتفرم کلاینت .

در مورد بازار کار ایران و ضمینه های استفاده نود هم اگه ممکنه توضیح بدین
شخصا بیشتر از نود برای نوشتن ربات با puppeteer استفاده میکنم و یا مکمل اپلیکیشن های php که نیاز به عملکرد ریل تایم دارن
ولی خب انقد جذاب و لذت بخشه که احتمالا شروع کنم به نوشتن کل اپ هام تو بستر نود

cybercoder
دوشنبه 26 خرداد 1399, 11:10 صبح
تقریبا درصد بالایی از اپلیکیشن هایی که نیاز به http web socket دارند و همزمان هم نیاز به rest API یا graphQL دارند با Node پیاده می شوند. البته python و golang هم در این زمینه مطرح هستش و در برخی موارد خاص C.

موفق باشید.

cybercoder
چهارشنبه 28 خرداد 1399, 18:35 عصر
نود همه رکوئست ها / تسک ها رو با یک ترد هندل میکنه
در نتیجه وقتی یک تسک سنگین در دست اجرا باشه ممکنه نتونه بقیه تسک ها / رکوئیست ها رو پاسخگو بشه

ولی توی php هر رکوئست رو یک ترد مجزا هندل میکنه

البته من تخصصم node نیست اگه تو خود بخش نود بپرسی یه دوست خیلی حرفه هست که البته خیلی سر نمیزنه ولی شاید بتونه بهتر پاسخ بده مطئنا راهکار هایی برای این موارد داره


کارهای سنگینی که صحبتشون میشه
کارهایی مثل دستکاری تصاویر یا ویدئو منظوره ...نه محسابات ریاضی
یجورایی میشه گفت همونچیزایی که ممکنه کامپیوتر خودت رو سنگین و کند کنه
شما لطف دارید قربان. بنده برنامه نویس سطح میانی هستم.

موفق باشید.

plague
پنج شنبه 29 خرداد 1399, 09:45 صبح
خواهش میکنم , از پاسخ ها مشخصه تخصص افراد تمجید و تعریف بیخود نیست