PDA

View Full Version : سرعت و قدرت PHP برای سایت های بزرگ با تعداد یوزر بالا



mrprogramer
دوشنبه 23 آذر 1394, 13:43 عصر
سلام .

دوستان آیا PHP قابلیت اجرای حجم انبوه داده هارو با سرعت مناسب داره یا خیر ؟

مثلا اگه اپ پیام رسان تلگرام با PHP نوشته میشد سرعت فعلی رو داشت یا خیر ؟

اصلا کسی میدونه تلگرام با چه زبانی نوشته شده ؟

ممنون .

mrprogramer
دوشنبه 23 آذر 1394, 14:22 عصر
چرا این انجمن انقد ضعیف عمل میکنه در جواب دادن ؟

سوال سختی نبود که فقط از دونسته هاتون به اشتراک بزارید تا بررسی کنیم .

الان من درحال نوشتن یه اسکریپت بزرگ به زبان PHP هستم میخوام بدونم ادامه بدم یا برم سراغ Node.js .

us1234
دوشنبه 23 آذر 1394, 16:06 عصر
php مناسب است ولی بیشتر از php باید وب سرور و همچنین دیتابیس انجین مناسب انتخاب کنید .

در حال حاظر بهترین وب سرور برای درخواست های انبوه nginX است .

mySql هم انجین مناسبی است ولی اگر حجم دیتا شما خیلی زیاد است از انجین های noSql استفاده کنید .

mrprogramer
دوشنبه 23 آذر 1394, 16:36 عصر
php مناسب است ولی بیشتر از php باید وب سرور و همچنین دیتابیس انجین مناسب انتخاب کنید .

در حال حاظر بهترین وب سرور برای درخواست های انبوه nginX است .

mySql هم انجین مناسبی است ولی اگر حجم دیتا شما خیلی زیاد است از انجین های noSql استفاده کنید .

ممنون و متشکر از راهنماییتون .

میخواستیم برای قسمت هایی از Node.js استفاده کنیم برای همین روی همون NginX پیاده خواهیم کرد .

ولی میشه یه راهنمایی یا یه سرنخی از NoSql بدین تا بریم دنبالش ؟ چون الان داریم از MySql استفاده میکنم و قراره حجم داده هامون هم قطعا چندین میلیارد ردیف و داده خواهد بود ( شبکه کاربر محور )

Vidico
دوشنبه 23 آذر 1394, 19:12 عصر
http://barnamenevis.org/forumdisplay.php?203-NoSQL

Vidico
دوشنبه 23 آذر 1394, 19:15 عصر
mysql خودش مناسب هست، اگر اطلاعاتتون خیلی خیلی خیلی وسیع بود، شرکت mysql نسخه پولی رو در اختیارتون میده که قدرتش بیشتر از نسخه رایگانشه
میتونید php رو به oracle یا sql server وصل کنید، اینام دیگه نیازی به توضیح ندارن

aa_mehr
دوشنبه 23 آذر 1394, 19:57 عصر
سلام .

دوستان آیا PHP قابلیت اجرای حجم انبوه داده هارو با سرعت مناسب داره یا خیر ؟

مثلا اگه اپ پیام رسان تلگرام با PHP نوشته میشد سرعت فعلی رو داشت یا خیر ؟

اصلا کسی میدونه تلگرام با چه زبانی نوشته شده ؟

ممنون .

سلام دوست گرامی
سوالتان خیلی کلی هست و به نظرم به پاسخ ها در حد اظهار نظر شخصی نگاه کنید.

اینکه پروژه های بزرگ رو با php انجام میدهند ؟ بله انجام می دهند مثلا فیس بوک یا ویکی پدیا ، PHP قابلیت کار با huge data ها رو هم داره به شرطی که نویسنده برنامه نویسنده باشه . تحلیلگر سیستم تحلیلگر باشه.

اینکه تلگرام رو با چی نوشتن و اینکه آیا اگر با php می نوشتن به همین خوبی در میومد یا نه ؟ تا جایی که یادم میاد و قبلا خونده بودم با جاوا نوشتن با php نمیشه برنامه یی مثل تلگرام نوشت چون اساسا php سرور ساید هست ولی تلگرام بخش مهمیش کلاینت ساید هست .
و در ضمن سرویس های راه انداز php رو اگر هم قرار باشه استفاده کنید باید بصورت لوکال روی دستگاه مورد استفاده نصب کنید.
این دردسر ها موجوب میشه تولید کنندگان نرم افزار راه عاقلانه رو انتخاب کنن و برای تولید این دست از نرم افزارها به php حتی فکر هم نکنن

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

پیروز باشید.

root-A
دوشنبه 23 آذر 1394, 21:38 عصر
من خودم دارم با c++ سرور mongoose و دیتابیس oracel یک سیستم مدیریت محتوا مینویسم باید بگم خیییییییلی سخته چون هیچ مرجع درستی برای راهنمایی در این مورد و.. وجود نداره برای همین بیشتر مواقع برای کسایی که میخوان یک وبسایت ساده داشته باشن من php رو توصیه میکنم ولی اینکه برای پردازش های سنگین مناسب هست یا نه جواب من نه هست چون زبان اسکریپتی هست و صرفا برای استفاده راحت و مولتی پلتفربودنش و گسترش ساده کدهاش طرفدار داره بنظر من بهتره از جاوا یا c++ استفاده کنید

Vidico
دوشنبه 23 آذر 1394, 22:07 عصر
من خودم دارم با C++‎ سرور mongoose و دیتابیس oracel یک سیستم مدیریت محتوا مینویسم باید بگم خیییییییلی سخته چون هیچ مرجع درستی برای راهنمایی در این مورد و.. وجود نداره برای همین بیشتر مواقع برای کسایی که میخوان یک وبسایت ساده داشته باشن من php رو توصیه میکنم ولی اینکه برای پردازش های سنگین مناسب هست یا نه جواب من نه هست چون زبان اسکریپتی هست و صرفا برای استفاده راحت و مولتی پلتفربودنش و گسترش ساده کدهاش طرفدار داره بنظر من بهتره از جاوا یا C++‎ استفاده کنید
کاملا فرمایشتون درسته
شما فرض کنید یکی بره دنبال زبونی که منابع زیاد ندداره موقعی که به مشکل خوردی و نیاز به راهنمائی داشتی و کسی نبود کمکت کنه اون موقع کارت گیره

Unique
سه شنبه 24 آذر 1394, 01:49 صبح
دوستان آیا PHP قابلیت اجرای حجم انبوه داده هارو با سرعت مناسب داره یا خیر ؟
اجرای حجم انبوه یعنی چی ؟ داده ها را ثبت ، پردازش ،‌ جستجو و خیلی کار های دیگه میکنن اما اجرا نمیکنن !
اگه منظورتون اینه که PHP میتونه توی پروژه هایی که حجم انبوهی از اطلاعات را شامل میشن نقش موثری داشته باشه !؟ انقدر که منابع سرور ، پایگاه داده و ساختار و تکنیک های بهینه سازی و کوئری نویسی و استفاده از Cache اهمیت دارن خود PHP اهمیت چندانی نداره. و به طور کلی میشه گفت بله میتونه !


مثلا اگه اپ پیام رسان تلگرام با PHP نوشته میشد سرعت فعلی رو داشت یا خیر ؟
اصلا کسی میدونه تلگرام با چه زبانی نوشته شده ؟

تلگرام چه ربطی به PHP داره ؟! تلگرام یک نرم افزار موبایل هست که تحت جاوا روی پلتفرم Android نوشته شده و PHP یک زبان اسکریپتی سمت سرور هست و ذاتشون خیلی با هم فرق دارن.


چرا این انجمن انقد ضعیف عمل میکنه در جواب دادن ؟
سوال سختی نبود که فقط از دونسته هاتون به اشتراک بزارید تا بررسی کنیم .
یعنی شما انتظار داری توی ۴۰ دقیقه همه کسانی که توی انجمن PHP فعال هستند و به سوالات دوستان پاسخ میدن توی بحث شرکت کنن !؟


الان من درحال نوشتن یه اسکریپت بزرگ به زبان PHP هستم میخوام بدونم ادامه بدم یا برم سراغ Node.js.
فلسفشون به کلی با هم فرق داره و چون پروژه بزرگ هست نمیشه نتیجه گرفت از کدوم استفاده کنیم ! بحث های تکنیکی و فنی مشخص میکنن.

saeedvir
سه شنبه 24 آذر 1394, 04:31 صبح
یه نکته حاشیه ای هم اینکه php نسخه 7 خودش رو ارائه کرد.ولی خیلی بهبود بخشیده.

در سایت php.nethttp://php.net ببنید.

بک ایده ای هم یکبار یکی که داشت روی پروژه ای تقریبا بزرگ کار می کرد این بود که با دو یا سه زبان سمت سرور و کلاینت رو به هم ارتباط داده بود.

root-A
سه شنبه 24 آذر 1394, 17:46 عصر
بنظر من ایده خوبی نیست که از چند زبان مختلف استفاده کنیم چون با توجه به پروتکل های ارتباطی بین اونا ممکنه کار پیچیده بشه حالا اگه ساختار چند نخی هم وارد این موضوع بشه که نور علی نور میشه بنظر من c++ بهترین گزینه برای نرم افزار های تحت وبیه که نیاز پردازشی بزرگی رو طلب میکنن چون عملا هر کاری که به فکرتون برسه میتونید باهاش بکنید مراجع اطلاعاتی زیادی داره و مهم تر از همه تعداد خیییلی زیادی کتابخونه داره که کار رو خیییلی ساده میکنه البته دوباره میگم کار با c++ خیلی سخت تر از php یا perl و peyton هست برای همین اگه نیاز به تغیرات سریع دارید یا دوست دارید با هاست کار کنید تا سروربنظر من امکانات php هم خوبه.

اگه خواستید با c++ کار کنید چنتا راهنمایی براتون دارم

-از cgi استفاده نکنید (چون عملا لقمه رو دور گردنتون میچرخونید سعی کنید از سورس مستقیم سرور استفاده کنید یا پلاگین خودتون رو بنویسید)

- قابلیت خوانایی و گسترش نرم افزارتون رو در اولیت هاتون قرار بدید(من خودم سعی کردم یک هسته درست کنم و تمامی موارد داخل نرم افزار رو بصورت DLL لود کنم همین باعث میشه که بتونم بینهایت امکانات جدید رو بدون نیاز به آپدیت هسته به نرم افزار اضافه کنم بعنوان مثال سرور رو بصورت یک ماژول جداگانه طراحی کردم که اگه نرم افزاری نیاز به ارتباط باهاش رو داشته باشه بهش کانکت میشه و بدون توجه به نوع سرور داده رو با توجه به پرتکل خاص دریافت میکنه داخل ماژول سرور هم ماژول های سرور های اصلی رو لود میکنم مثل آپاچی انجین ایکس یا مونقوز )

-کتابخونه هاتون رو طوری انتخاب کنید که بشه باهاشون رو سکو های مختلف کار کرد.

-مهم ترین نکته در مورد نرم افزار های تحت وب انعطاف پذیریه وب محیط بسیار ناپایداریه بنابر این نرم افزار ممکنه با انواع خطا ها مواجه بشه پس قابلیت دریافت خطا رو در هر گوشه نرم افزار در نظر بگیرید.

Unique
سه شنبه 24 آذر 1394, 22:17 عصر
بنظر من ایده خوبی نیست که از چند زبان مختلف استفاده کنیم چون با توجه به پروتکل های ارتباطی بین اونا ممکنه کار پیچیده بشه حالا اگه ساختار چند نخی هم وارد این موضوع بشه که نور علی نور میشه

موضوع به نظر من اصلا پیچیدگی نیست ،‌کلا وقتی از چند زبان برای پیاده سازی یک پروژه استفاده بشه توسعه اون مشروط و محدود میشه و هزینه این توسعه و نگهداری هم بالا میره. اینکه بخش کوچیکی از پروژه به واسطه تکنولوژی یا زبان دیگه ای پیاده بشه که به اصل کار لطمه نزنه موضوع دیگه ایه !


بنظر من C++‎ بهترین گزینه برای نرم افزار های تحت وبیه که نیاز پردازشی بزرگی رو طلب میکنن
منظورتون از نیاز پردازشی چیه !؟مثلا چه تیپ کاری مد نظرتون هست !؟ آخه مشکل اینه یکسری از دوستان هستند که اصلا Scale و حد اندازه کرای که میکنن را درک نمیکنن مثلا طرف میگه سایت اجتماعی در حد فیسبوک !!!


از cgi استفاده نکنید (چون عملا لقمه رو دور گردنتون میچرخونید سعی کنید از سورس مستقیم سرور استفاده کنید یا پلاگین خودتون رو بنویسید)
منظورتون دقیقا چیه !؟ یعنی بیای کل پروسه HTTP را بر عهده بگیری !؟ یا بیای برای وب سرور پلاگین نویسی یا ماژول نویسی کنی !؟ میشه مثلا دقیقا بگین برنامه مورد نظرتون با Apache چظور کار میکنه ؟ خود PHP میتونه cgi یا fastcgi یا modular روی Apache کار کنه منطورتون اینه چیزی شبیه mod-php بسازیم ؟!

بعدش شما پیشنهاد میدیم کل پروژه بیاد روی بستر ++C ؟! یا جاهایی که مشکل performance وجود داره !؟

root-A
سه شنبه 24 آذر 1394, 23:31 عصر
خوب منظور از پیچیدگی اینه که شما یک سرور به زبان c دارید که نرم افزار به زبان جاوا رو اجرا میکنه نرم افزار جاوای شما هم داده اش رو از دیتابیس به زبان C++‎‎‎ دریافت میکنه اینا چطور باهم ارتباط برقرار میکنن؟ حالا ما میگیم مموریشیر یا شبکه این پرسه های اتصال و ... زمان بر هستند اما این روش معمول برای ارتباط بین سرور با نرم افزار و نرم افزار با دیتابیس هست حالا اگه بخوایم برای هر قسمت یک نرم افزار همچین کاری بکنیم این برای ما مشکل ساز میشه اینطور فکر نمیکنید؟

تا جایی که من متوجه شدم منظور ایشون اینه که میخوان یک نرم افزار داشته باشن که به تعداد زیادی از رکوئست ها در یک زمان کوتاه جوابگو باشه و تلگرام رو مثال زدن و تاجایی که من میدونم هزینه استفاده از یک نرم افزار به زبان C++‎‎‎ خیلی کمتر از یک اسکریپت php هست بنابر این من هم C++‎‎‎ رو پیشنهاد دادم


من با cgi و fast cgi کارکردم ولی از نتیجه راضی نبودم یعنی زمان میبرد تا سرور نرم افزار رو فراخوانی کنه استفاده از ماژول هم مثل دو مورد قبلی باید سرور کارش رو تموم میکرد تا ماژول من نرم افزار روفراخوانی کنه (در کل با خودم گفتم اگه بخوام برای فراخوانی سرور صبر کنم پس چرا دارم از C++‎‎‎ استفاده میکنم)برای همین پروسه http رو توسط mongoose داخل نرم افزار مدیریت کردم و نتیجه حاصله خیلی بهتر بود

اینکه من بگم آره حتما باید از C++‎‎‎ استفاده بشه کار احمقانه ایه چون اگه سطح درخواست از نرم افزار زیاد نباشه عملا وقت هدر دادنه و php بهترین انتخابه اما اگه سطح درخواست زیاده (اونقدر زیاد که نشه با php بهش جواب داد )قطعا پیشنهاد من C++‎‎‎

mrprogramer
چهارشنبه 25 آذر 1394, 13:33 عصر
ممنون از همه دوستانی که راهنمایی کردن .

برای مثال ما میخوایم یه نرم افزاری رو تحت چند سیستم عامل در دسترس قرار بدیم .

ویندوز
آندروید
IOS
نسخه وب ( Browser منظورمه )

کار اصلی رو میخوایم محول کنیم به زبان Node.js و API ها از طریق این زبان ارائه بشه ( در حقیقت کار اصلی رو این زبان انجام بده ) .

برای نسخه وب که میخوایم داده هارو نمایش بدیم از PHP استفاده کنیم ( منظور همون رابط کاربری رو با PHP , HTML , CSS بنویسیم به جای اینکه از Angular استفاده کنیم )
برای نسخه آندروید که مسلمااز جاوا استفاده میکنیم و از API های Node.js مون بهره میبریم .
برای نسخه IOS از Objective-C و مثل آندروید بازم از API ای که از Node.js میگیریم استفاده میکنیم .

در کل مسئله اصلی اینه بنظرتون درسته کار اصلی رو ( که انتقال سریع پیام ها هست رو ) به Node.js بسپاریم و نسخه وبش رو با PHP ؟
در حقیقت وب سرور و سوکت پروگرمینگ از طریق Node.js انجام میشه .

بنظرتون این کار اشتباهه ؟

Unique
چهارشنبه 25 آذر 1394, 15:06 عصر
خوب منظور از پیچیدگی اینه که شما یک سرور به زبان c دارید که نرم افزار به زبان جاوا رو اجرا میکنه نرم افزار جاوای شما هم داده اش رو از دیتابیس به زبان C++‎‎‎‎ دریافت میکنه اینا چطور باهم ارتباط برقرار میکنن؟ حالا ما میگیم مموریشیر یا شبکه این پرسه های اتصال و ... زمان بر هستند اما این روش معمول برای ارتباط بین سرور با نرم افزار و نرم افزار با دیتابیس هست حالا اگه بخوایم برای هر قسمت یک نرم افزار همچین کاری بکنیم این برای ما مشکل ساز میشه اینطور فکر نمیکنید؟

حالا متوجه شدم چی میگین ! البته اون ارتباط apache و php یا jsp و mysql که انقدر سریع هست که قابل چشم پوشیه مخصوصا وقتی به جای tcp از socket ها استفاده کنیم اما وقتی میگیم یک پروژ وب را با زبان های مختلف بنویسیم منظور اینه اگه در بخشی از کار به دلیل performance بالای node.js توی ارتباط های Asynchronous از طریق proxy های nginx کار را بندازیم روی دوش node.js پیچیدگی به وجود نیاوردیم و فقط بخشی از کار را توسط تکنولوژی بهتری انجام دادیم ! قرار نیست بیایم مثلا اطلاعات را با ndoe.js بگیریم ! پردازش را بدیم به C و با PHP نمایش بدیم !


من با cgi و fast cgi کارکردم ولی از نتیجه راضی نبودم یعنی زمان میبرد تا سرور نرم افزار رو فراخوانی کنه استفاده از ماژول هم مثل دو مورد قبلی باید سرور کارش رو تموم میکرد تا ماژول من نرم افزار روفراخوانی کنه (در کل با خودم گفتم اگه بخوام برای فراخوانی سرور صبر کنم پس چرا دارم از C++‎‎‎‎ استفاده میکنم)برای همین پروسه http رو توسط mongoose داخل نرم افزار مدیریت کردم و نتیجه حاصله خیلی بهتر بود
حالا قابل درک شد ،‌ منظورتون اینه کلا بی خیال apache و وب سرور ها بشیم و خودمون با برنامه از طریق یک Embedded Web server کل پروسه HTTP را مدیریت کنیم. خوب این بحث کلا php و وب سرور را میگذاره کنار و توی بحث این انجمن نمی گنجه !


در کل مسئله اصلی اینه بنظرتون درسته کار اصلی رو ( که انتقال سریع پیام ها هست رو ) به Node.js بسپاریم و نسخه وبش رو با PHP ؟
شم امیخواین نرم افزار Messenger نویسین و بهترین انتخاب همون Node.js هست ، اما اینکه میگین نسخه وب منظورتون :

۱ - نسخه وب Messenger هست ؟
اگه منظورتون اینه که خوب نیازی به php نیست و با javascript سمت کلاینت و Node.js کار را انجام بدین.

- سایت معرفی Messenger و قابلیت های اون ؟
خوب دیگه بحث سرعت اینجا دیگه مطرح نیست و میتونین با php پیادش کنید.

mrprogramer
چهارشنبه 25 آذر 1394, 16:28 عصر
بازم تشکر میکنم که دوباره سر زدین به این مطلب .

نه اگه بخوام خیلی مبتدیانه بگم اینه که رابط کاربری رو با PHP بالا بیاریم ( لیست دوستان و گروه ها ) ولی انتقال پیام ها با Node.js انجام بشه از طریق API

منطقیه بنظرتون ؟

به نوعی کلاسنت ساید رو با PHP بزنیم و سرور ساید رو با Node.js ( میدونم PHP هم سمت سروره ها ولی اینجوری گفتم تا درک کنید چجوری میخوایم )

Unique
چهارشنبه 25 آذر 1394, 17:55 عصر
اینجوری که شما میگین php به خوبی جواب میده !