انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: افزایش سرعت PHP با استفاده از HPHPc و HHVM و پیش بینی آینده!  (دفعات بازدید: 6958 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین milad.fashi

  • Hero Member
  • *
  • ارسال: 845
  • جنسیت : پسر
  • میلاد فشی
فیس بوک وقتی که متوجه شد زبان Interpreter (مفسری) PHP برای سایت غول پیکری مثل فیسبوک کند شده است.آنها به جای اینکه هزینه ی زیادی برای خرید سرورهای بیشتر متحمل بشن.از یک مبدل به اسم hip hop استفاده کردند.این مبدل در واقع یک Trans-compiler یا به اختصار Transpiler بود.Hip Hop Trans-compiler  یک source-to-source compiler است که به آن HPHPc هم میگویند. HPHPc کد مبدا php را به کد مقصد ++c تبدیل میکند.و کد ++c هم توسط کامپایلر ++g به کد باینری تبدیل میشود و با سرعت خیلی بیشتری اجرا میشود. فیس بوک ادعا میکند  با استفاده از HPHPc  سرعت سایت اش  ۶ برابر افزایش پیدا کرده.و با افزایش سرعت اجرایی سایت، هزینه های خرید سرور بسیار کاهش پیدا کرده و بار پردازنده های این شرکت سبک تر شد.فیس بوک HPHPc را در سال 2010 تحت لایسنس PHP منتشر کرد.(لایسنس PHP هم متن باز هستش ولی copy-left نیست و شبیه BSD License هستش).
شرکت فیس بوک در سال ۲۰۱۳ به جای مبدل hip hop از ماشین مجازی Hip Hop Virtual machine استفاده کرد. این ماشین مجازی در واقع یک just-in-time کامپایلر است.JIT در فارسی کامپایل درجا ترجمه شده.و به کامپایل پویا(Dynamic Compile ) هم معروف است.در واقع JIT و Dynamic Compile و Virtual machine همگی یک مفهوم را دارند.
زبان جاوا خروجی ماشین کد(Machine code)نمیدهد.و خروجی زبان جاوا بایت کد(Byte code) هستش.و این بایت کد یک زبان میانی(Intermediate language) است که توسط ماشین مجازی جاوا به صورت JIT تبدیل به ماشین کد میشود.
مایکروسافت هم به تقلید از جاوا هنگام کامپایل کد سی شارپ خروجی ماشین کد نمیدهد و خروجی کامپایل سی شارپ (MSIL=Microsoft Intermediate Language) هستش.و بعد توسط Common Language Runtime به ماشین کد تبدیل میشود و اجرا میشود.
CLR مایکروسافت مانند JVM جاواست.و MSIL مایکروسافت همان Byte Code جاواست.
Hip Hop Virtual machine فیس بوک هم عملکردی شبیه به JVM و یا CLR دارد. HipHop bytecode هم همان کد میانی فیسوک است.
اما مایکروسافتی که سیاست انحصاری دارد و نمیخواهد Cross-platform‌باشد چرا از زبان میانی و JIT کامپایل استفاده کرده!؟ شاید سیاست این شرکت استفاده از زبان سی شارپ برای کد نویسی دسکتاپ و موبایل است(Cross platform).هرچند مایکروسافت در سیستم عامل های موبایل موفق نبود ولی حالا شانس خود را با ویندوز فون و Windows 8 RT بر روی معماری ARM میخواهد امتحان کند و بازار موبایل را هم در چنگ بگیرد!

اما از بحث اصلی دور نشویم.سوالاتی که در ذهن من شکل گرفت این ها هستند :
1. تفاوت کامپایل استاتیک(Static Compile) و مفسر (Interpreter ) و ماشین مجازی (Virtual Machine) چیست؟
2. چرا فیس بوک Hip Hop Trans-Compiler را رها کرد و به سمت Hip Hop Virtual machine رفت؟
3.  hip hop virtual machine نسبت به JVM  و CLR چه مزیتی دارد؟
4. ماشین مجازی HIP HOP فیس بوک چه مزیتی به HPHPc و مفسر PHP دارد؟
5. ماشین مجازی HIP HOP قرار است با PHP کار کند یا با زبان جدید HACK که توسط خود Facebook ساخته شده؟ سرنوشت PHP مفسری که ماشین مجازی ندارد چه میشود؟
6. زبان Hack فیس بوک و ماشین مجازی آن توسط چه فریم ورکی به کار گیری میشود؟و آیا Facebook بعد از انتشار و گسترش زبان Hack به زبان PHP وفادار خواهد ماند یا به زبان Hack کوچ میکند؟

پاسخ سوالات (ممکن است جواب های من اشتباه باشد.اگر اشتباهی دارم لطفا گوشزد کنید)
۱-تفاوت کامپایل استاتیک و مفسر (Interpreter ) و (Virtual Machine) چیست؟
کامپایل استاتیک : در کامپایلرهای خیلی قدیمی کامپایلر Source Code شما را میخواند و آن را به کدهای اسمبلی تبدیل میکرد و کدهای اسمبلی را در یک فایل بر روی دیسک ذخیره میکرد.بعد اسمبلر(Assembler) فایل را میخواند و از روی کدهای اسمبلی کدهای ماشین(کده های باینری) را تولید میکرد.ولی کامپایلرهای امروزی کد اسمبلی را در حافظه اصلی به صورت موقت نگه میدارند و خودشان کار اسمبلر را هم انجام میدهند و کدهای اسمبلی درون حافظه را میخوانند و مستقیم به کد باینری(ماشین کد اجرایی) تبدیل میکنند.به همین خاطر گاهی گفته میشود که کامپایلر ++c کدهای شما را ابتدا به کد اسمبلی تبدیل میکند و بعد آن را اسمبلر به کد اجرایی (باینری) تبدیل میکند.و گاهی نیز حرفی از اسمبلر زده نمیشود و میگویند در زبان ++c کامپایلر بعد از کامپایل ماشین کد اجرایی تولید میکند.( کد اسمبلی بسیار به کد ماشین نزدیک است و اسمبلی در واقع همان کد ماشین است که Notation آن متفاوت است و  تبدیل از کد اسمبلی به کد ماشین اصلا دشوار نیست چون فقط یک نگاشت از mnemonic به صفر و یک است . و  اسمبلر هیچ گاه پیچیدگی کامپایلر را ندارد. پس در زمان اجرا چندان تاثییرگذار نیست و به همین خاطر اغلب صحبتی از آن نیست! )
مفسر در واقع هیچ کامپایلی رو انجام نمیده.و خطوط برنامه توسط مفسر خط به خط خوانده میشود و تفسیر میشود و بعد اجرا میشود.
 Virtual Machine دو مرحله کامپایل دارد.در کامپایل مرحله اول کدهای سطح بالای  شما که به زبان انسان نزدیک است(human readable source code) را به کدهای سطح میانی(IL) که به زبان ماشین نزدیک است ولی زبان ماشین(صفر و یک) نیست تبدیل میکند.(machine-readable byte code). در کامپایل مرحله دوم هم کدهای میانی(بایت کد) توسط ماشین مجازی طی فرآیند Just-in-time Compile به کدهای ماشین(صفر و یک) تبدیل میشود.و روی ماشین اجرا میشود.
مقایسه این ۳ شیوه از نظر سرعت و کارایی ( Performance ) :
بدیهی است که Static Compile (مثل کامپایلر زبان سی) که ماشین کد تولید میکند خیلی سریع تر و بهینه تر است.اما مشکل Static Compile این است: «ماشین کدی که کامپایلر استاتیک تولید میکند وابسته به ماشین(Machine or Architecture Dependency) است.به همین خاطر سورس کدی که به ماشین کد تبدیل شده فقط بر روی ماشین مقصد کار میکند.برای مثال کد ماشینی که از زبان سی کامپایل شده و  به صورت exe است فقط بر روی معماری intel/x86 کار میکند.و اگر همین ماشین کد بر روی معماری arm قرار بگیرد پردازنده توانایی اجرای ماشین کد معماری Intel/X86 را ندارد.»
ولی زبان های مفسری که اغلب Dynamic Typing هستند(مثل php,python,perl) این مشکل رو ندارند.چون سورس کد شما اصلا کامپایل نمیشه.و سورس کد شما توسط مفسری که بر روی ماشین مقصد قرار داره خط به خط خوانده میشود و تفسیر میشود و اجرا میشود.(منظور از تفسیر این است که خط به خط کد شما به آپ -کد اسمبلی ماشین مقصد تفسیر میشود و بعد op-code اسمبلی آن ماشین توسط اسمبلر ترجمه میشود ).در این جا مشکل انتقال برنامه از یک ماشین به ماشین دیگر کم رنگ تر شده.کافی است برای هر معماری ما یک مفسر مخصوص به آن معماری بنویسیم.و به این ترتیب کد منبع  بر روی هر ماشینی که مفسر ما بر روی آن قرار گرفته اجرا میشود.اما مشکل این روش کندی آن است.در مفسرها هر بار که برنامه اجرا میشود مفسر خط به خط سورس کد را میخواند (مثلا سورس کد PHP)  را میخواند و آن را به آپ کد اسمبلی assembly opcode تفسیر میکند.و بعد op-code ها توسط اسمبلر(Assembler) به ماشین کد تبدیل میشود و بعد توسط پردازنده اجرا میشود.پس بدیهی است که مفسرها هیچ وقت کارایی کامپایلرهای استاتیک ر ا ندارند.به همین خاطر فیسبوک Hip Hop Trans-compiler را ساخت تا کدهای PHP را به کدهای ++c تبدیل کند.
ماشین مجازی از نظر سرعت و کارایی نه به اندازه ی مفسرها کند است.و نه به اندازه کامپایلرهای استاتیک سریع است.اگر چه ماشین مجازی سرعت کامپایلرهای استاتیک را ندارد.ولی در عوض مستقل از ماشین(Machine In-dependency) است.مثل بایت کدهای جاوا که به کمک JVM های مختلف بر روی موبایل و کامپیوتر(لینوکس و ویندوز و مک) و پردازنده های توکار (Embedded Processors) اجرا میشود.
علت اینکه ماشین مجازی(Just-in-time Compile ) سریعتر از مفسر(Interpreter) است چیست؟
علت این است که کامپایل کردن از بایت کد به ماشین کد خیلی سریعتر از تفسیر کردن سورس کد به ماشین کد است.چون سورس کد به زبان انسان نزدیک است و از زبان ماشین دور است.ولی بایت کد به زبان ماشین نزدیک است.
بدیهی است که مفسرها باید خط به خط کد شما را توسط Token بخوانند و بعد آن را تجزیه(Parse) کنند و بعد آن چند مرحله تحلیل را انجام بدهند.(Lexical and Syntax and Semantic Analyzer) و بعد تولید کد و بعد بهینه سازی کد اسمبلی و بعد تولید ماشین کد مسیر پیچیده تر و  طولانی تری است و به همین دلیل مفسرها کند تر از Virtual machine  هستند.شاید دلایل دیگری هم وجود دارد که من آنها را نمیدانم!

۲- چرا فیس بوک Hip Hop Trans-Compiler را رها کرد و به سمت Hip Hop Virtual machine رفت؟
دقیقا جواب این سوال را نمیدانم.ولی فکر میکنم کار کردن با ماشین مجازی و توسعه ماشین مجازی هم برای فیس بوک راحت تر است و هم برای برنامه نویسی که میخواهند از این ماشین مجازی استفاده کند.همچنین با ماشین مجازی میتوان هم کدهای PHP را سریعتر اجرا کرد و هم کدهای زبان Hack را.چون ماشین مجازی هر دو زبان را میتواند به HipHop Byte code‌ تبدیل کند و بعد آن را به صورت JIT بر روی هر ماشینی اجرا کند.

۳-  hip hop virtual machine نسبت به JVM  و CLR چه مزیتی دارد؟
در مورد سرعت و کارایی ماشین مجازی های Hip Hop و Java و CLR نمیتوانم حرفی بزنم! چون آنها را مقایسه نکرده ام!

4-ماشین مجازی HIP HOP فیس بوک چه مزیتی به HPHPc و مفسر PHP دارد؟
مهندسین فیسبوک ادعا میکنند که سرعت HHVM دو برابر سرعت HPHPc است!!!(من متعجبم از این ادعای فیسبوک.چون بر روی کاغذ ماشین کدهایی که توسط HPHPc تولید میشود سریعتر از بایت کدهای HHVM است.چون ماشین کد صفر و یک است و مستقیم بر روی پردازنده Execute میشود.ولی بایت کد باید باز هم به صورت درجا کامپایل شود!)
همچنین Facebook ادعا میکندHHVM  نه برابر سریع تر از PHP است.اما آنها معتقدند زمانی سرعت سایت PHP‌ شما ۹ برابر میشود که اندازه سایت شما خیلی بزرگ باشد.و برای سایت هایی با اندازه استاندارد(Standard size web sites) حداکثر افزایش سرعت ۵ برابر است.

۵-ماشین مجازی HIP HOP قرار است با PHP کار کند یا با زبان جدید HACK که توسط خود Facebook ساخته شده؟ سرنوشت PHP مفسری که ماشین مجازی ندارد چه میشود؟
فیسبوک کدهای ماشین مجازی HHVM را در GitHub به صورت متن باز قرار داده تا کسانی که دوست دارند سرعت وب سایت PHP خود را افزایش دهند از آن استفاده کنند و یا آن را بهبود ببخشند. ماشین مجازی HHVM توانایی اجرای کدهای Hack و PHP‌را دارد.و ۹۹ درصد کدهای PHP توسط HHVM پشتیبانی میشود.و تیم توسعه دهنده HHVM قصد دارد که در آینده  از ۱۰۰ درصد کدهای PHP پشتیبانی کند.

۶-زبان Hack فیس بوک و ماشین مجازی آن توسط چه فریم ورکی به کار گیری میشود؟و آیا Facebook بعد از انتشار و گسترش زبان Hack به زبان PHP وفادار خواهد ماند یا به زبان Hack کوچ میکند؟
نمیدونم چه فریمورکی از زبان جدید Hack پشتیبانی میکنه! زبان Hack‌ زبان جدیدی است و فکر میکنم هنوز فریم ورکی از آن پشتیبانی نمیکند!(اگر شما با فریم ورکی آشنا هستید که این زبان را پشتیبانی میکند یا قصد دارد در آینده این زبان را پشتیبانی کند آن را بیان کنید.) زبان Hack از زبان PHP مشتق شده و سینتکس آن بسیار به PHP شبیه است و تفاوت آن با PHP این است که فقط چندین ویژگی جدید به آن اضافه شده تا کد با کیفیت تری بنویسید.حتی شما میتونید کدهای Hack را به صورت ترکیبی با کدهای PHP بنویسید.در سورس کد شما هر جا که کد PHP نوشتید باید آن را با php?> شروع کنید.و هر قسمت از کد شما که کد Hack است میتوانید آن را با hh?> شروع کنید.به این ترتیب کوچ کردن از PHP‌ به Hack خیلی راحت تر میشود.تیم توسعه فیسبوک معتقد است که آنها برای طراحی زبان Hack به صورت ترکیبی از مطالعات رسمی و آکادمیک و از تجربیات تجاری و صنعتی خود استفاده کرده اند.و پروژه توسعه Hack هم به صورت Open Source هستش.
یکی از معایب زبان PHP تعریف متغیرها به صورت ضمنی(Implicit) است.PHP سنتی به دلیل dynamically typed بودن کار برنامه نویس را راحت میکند و متغیرهای آن بسیار منعطف است و یک متغیر میتواند هر مقداری را در خود نگه دارد.ولی این ویژگی اگرچه باعث سادگی و راحتی استفاده از متغیرها شده است ولی تعریف ضمنی متغیرها باعث خطاهای زمان اجرا میشود. در زبان های C و Java تعریف متغیر  فقط به صورت صریح(Explicit) است. یعنی شما حتما باید تعیین کنید متغیر integer است یا decimal و یا boolean است !؟ این ویژگی احتمال خطاهای زمان اجرا  را کم تر میکند.
در زبان Hack شما میتوانید متغیرها را implicit و explicit تعریف کنید.یعنی هم مثل زبان جاوا میتوانید نوع متغیر را explicit تعریف کنید و خیالتان راحت باشد که خطایی به خاطر نوع آن متغیر رخ نمیدهد. و هم میتوانید مثل زبان PHP متغیر را implicit (بدون نوع) تعریف کنید.زبان Hack یک زبان gradual typing است چون که هم dynamic typing است و هم static typing است.همچنین در این زبان نوع داده ای به اسم Collection اضافه شده که در واقع همان آرایه است که عناصر آن دارای نوع از پیش تعریف شده هستند.
یکی دیگر از ویژگی های خوب زبان Hack برنامه نویسی ناهمگام (Asynchronous Programming) است.PHP سنتی Synchronous programming (برنامه نویسی همگام) آن کارایی را کاهش میدهد و زمان را تلف میکند.چون در PHP نمیتوانید همزمان چند I/O tasks  را به صورت پارالل اجرا کنید.و باید منتظر بمانید تا Task‌ اول اجرایش تمام شود تا Task‌ دوم را بتوانید اجرا کنید.(به اسکریپتی فکر کنید که میخواهد از چندین سایت اطلاعاتی را بخواند و جمع آوری کند). در زبان Hack به کمک کلمات کلید await and async keywords میتوانید کدهایی را بنویسید که قابلیت اجرای پارالل دارند.  همچنین از دیگر قابلیت های زبان Hack کلاس ها Generics هستند.

اما زبان Hack زبان PHP‌ را از بین میبرد؟ به نظر من زبان PHP‌در خطر است.چون که حتی در نسخه ۷ هم شاید نتواند به دستاوردهای زبان Hack‌برسد.و برای خودش ماشین مجازی داشته باشد.
زبان جدید سمت سرور node.js هم ماشین مجازی ندارد و از ماشین مجازی جاوا استفاده میکند.ماشین مجازی جاوا توانایی اجرای زبان های غیر جاوای زیادی رو داره(مثل زبان جاوا اسکریپت.برای مثال Nodyn که به کمک آن میتوانید کدهای جاوا اسکریپت فریمورک node.js  را روی ماشین مجازی جاوا یا JVM اجرا کنید) و شاید PHP‌هم برای باقی عمرش وابسته به HHVM زبان  Hack‌باشه !
البته زبان Hack و ماشین مجازی HHVM‌ راه طولانی رو در پیش داره و هنوز در محیط ویندوز هم ماشین مجازی نداره و فقط نسخه لینوکسی داره.در صورتی که برخی از برنامه نویس های PHP‌در ویندوز از فریم ورک های ویندوزی و  XAMP استفاده میکنند.
کیفیت زندگی شما را دو چیز تعیین می کند: کتابهایی که می‌خوانید و انسانهایی که ملاقات می‌کنید. (مک لوهان)
To love GNU/Linux, you don't need to hate Microsoft

آفلاین abedzadeh

  • High Hero Member
  • *
  • ارسال: 1597
  • جنسیت : پسر
  • aliila
خیلی ممنون
واقعا جالب و مفید بود
خیلی چیزاش برام جدید بود
به گروه کاربران اوبونتوی ایرانی در جامعه ی استیم بپیوندید
http://steamcommunity.com/groups/Ubuntu-Iran
بازی های تحت پوشش : Dota2

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19724
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
مرسی.قلم خوبی هم داری. کلّش رو خوندم و واقعاً از خوندنش لذّت بردم! نمی‌خوای برای مجلّه‌ی سلام‌دنیا مظلب بنویسی؟
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین milad.fashi

  • Hero Member
  • *
  • ارسال: 845
  • جنسیت : پسر
  • میلاد فشی
مرسی.قلم خوبی هم داری. کلّش رو خوندم و واقعاً از خوندنش لذّت بردم! نمی‌خوای برای مجلّه‌ی سلام‌دنیا مظلب بنویسی؟
ممنون شرمنده ام نکنید  :oops:
دانیال بهزادی عزیز دل به دل راه داره و من هم از خوندن مطالب شما لذت میبرم
دوست دارم مطلب بنویسم.ولی نه همیشه.گاهی دلم میخواد بنویسم.و شاید مطلب خوبی از آب دربیاد.من این مجله رو نمیشناسم.اگه معرفیش کنی و باهاش آشنا بشم.هر وقت مطلبی داشتم میتونم به اون مجله بدم.تا حالا برای مجله ای کار نکردم و قوانین اش رو نمیدونم.باید به طور فعال با اون مجله کار کنم؟ یا هر وقت مطلبی داشتم میتونم درج کنم؟
کیفیت زندگی شما را دو چیز تعیین می کند: کتابهایی که می‌خوانید و انسانهایی که ملاقات می‌کنید. (مک لوهان)
To love GNU/Linux, you don't need to hate Microsoft

آفلاین احسان☺

  • Full Member
  • *
  • ارسال: 220
  • جنسیت : پسر

آفلاین PunkGeek

  • High Sr. Member
  • *
  • ارسال: 573
خیلی ممنونم، اما من راستش خیلی دنبال این هستم که بتونم با هیپ هاپ سورسم رو کامپایل کنم اما هیچ چیزی پیدا نکردم، اطلاع دارید که چجوری میتونم کامپایلش کنم؟

آفلاین milad.fashi

  • Hero Member
  • *
  • ارسال: 845
  • جنسیت : پسر
  • میلاد فشی
خیلی ممنونم، اما من راستش خیلی دنبال این هستم که بتونم با هیپ هاپ سورسم رو کامپایل کنم اما هیچ چیزی پیدا نکردم، اطلاع دارید که چجوری میتونم کامپایلش کنم؟
سلام.متاسفانه عملی باهاش کار نکردم.ولی سعی کن با ماشین مجازی هیپ هاپ اونو اجرا کنی.فیس بوک روی لینوکس اوبونتو این کار رو انجام داده.راه حل نصبش هم در آدرس زیر هستش
https://github.com/facebook/hhvm/wiki/Building-and-installing-HHVM-on-Ubuntu-14.04
کیفیت زندگی شما را دو چیز تعیین می کند: کتابهایی که می‌خوانید و انسانهایی که ملاقات می‌کنید. (مک لوهان)
To love GNU/Linux, you don't need to hate Microsoft

آفلاین ngc0der

  • Full Member
  • *
  • ارسال: 106
خیلی ممنونم، اما من راستش خیلی دنبال این هستم که بتونم با هیپ هاپ سورسم رو کامپایل کنم اما هیچ چیزی پیدا نکردم، اطلاع دارید که چجوری میتونم کامپایلش کنم؟
من یه نگاه سریع به مستنداتش انداختم.اگه منظورتون کامپایل به بایت کد باشه می تونین این لینک رو ببینین : https://github.com/facebook/hhvm/wiki/Running%20PHP%20programs%20with%20HHVM
که در واقع تبدیل فایلهای php به بایت کد و ایجاد یک آرشیو از اونهاست چیزی شبیه jar فایلهای جاوا ولی اگه منظورتون از کامپایل، تولید کد native و برنامه مستقل برای اجرا باشه نه hhvm این کار رو نمی کنه یعنی کلا زبانهایی که بر پایه vm و jit compiler باشن این کار رو نمی کنن.

آفلاین PunkGeek

  • High Sr. Member
  • *
  • ارسال: 573
خیلی ممنونم، اما من راستش خیلی دنبال این هستم که بتونم با هیپ هاپ سورسم رو کامپایل کنم اما هیچ چیزی پیدا نکردم، اطلاع دارید که چجوری میتونم کامپایلش کنم؟
من یه نگاه سریع به مستنداتش انداختم.اگه منظورتون کامپایل به بایت کد باشه می تونین این لینک رو ببینین : https://github.com/facebook/hhvm/wiki/Running%20PHP%20programs%20with%20HHVM
که در واقع تبدیل فایلهای php به بایت کد و ایجاد یک آرشیو از اونهاست چیزی شبیه jar فایلهای جاوا ولی اگه منظورتون از کامپایل، تولید کد native و برنامه مستقل برای اجرا باشه نه hhvm این کار رو نمی کنه یعنی کلا زبانهایی که بر پایه vm و jit compiler باشن این کار رو نمی کنن.

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

آفلاین ngc0der

  • Full Member
  • *
  • ارسال: 106
اگه برنامه ای باشه که در cloud اجرا بشه و با افزایش تعداد کاربرها مجبور به گرفتن سرور قوی تر بشیم به نظر من برنامه از معماری درستی برخوردار نیست و از مفهوم کلاد سودی نبرده چون معمولا وقتی می گیم برنامه ای در قالب کلاد اجرا شده که با افزایش حجم پردازش بتونیم با اضافه کردن سرورهای جدید به صورت تقریبا اتوماتیک همچنان با کیفیت قبلی سرویس رو ارائه بدیم مفهمومی که معمولا با عنوان horizontal scaling ازش نامبرده میشه در مقابل vertical scaling که افزایش قدرت سروهای فعلی هست نه افزایش تعداد اونها.
از طرفی من تا به حال کامپایلر درست درمونی ندیدم که بتونه یک زبان رو به صورت کامل و بدون نقص به زبان دیگه ای تبدیل کنه و اکثر پروژه هایی که در این قالب بوده بعد از مدتی رها شده نمونه اش همین hphpc فیسبوک یا shed skin که برای پایتون نوشته شده بود.برای محافظت از سورس هم نهایت کاری که برای زبانهای اسکریپتی و مبتنی بر vm بشه انجام داد obfuscate کردن اونه که تا حدود زیادی خوندن کدهای زبانهای اسکریپتی مثل جاوااسکریپت و php و همچنین byte code های decompile شده ی زبانهایی مثل دات نت و جاوا رو سخت می کنه.

آفلاین ava

  • High Hero Member
  • *
  • ارسال: 1330
یعنی با hhvm دیگه نیازی به مفسر یا همون وب سرور (آپاچی و انجین ایکس و ... ) نداریم و با نصب کردنش توسط hhvm اجرا میشه ؟
این hhvm بازدهیش برای فایل ها استاتیک و رسانه ای و ... چقدره ؟ مثلا برای یک سرور دانلود هم بهتر از وب سرور هاست ؟
در ضمن https://en.wikipedia.org/wiki/HipHop_for_PHP با این ماشین مجازی جایگزین شده و دیگه هیچ جایی اثری ازش نیست شاید زیادی خوب بوده نگه داشتن واسه خودشون !
یه سوال دیگه این هست که فیس بوک با این همه منابع مالی و انسانی نمیتونه برداره و کد فیس بوک رو از اول توسط انسان به زبان دیگه ای بازنویسی بکنه ؟ مثلا با زبانی مثل go که هم سنتیک خوبی داره و هم سرعت خوبی داره و یا همون سی و ... ینویسه و چرا با این همه منابع و برنامه نویس خبره میاد و از همچین چیز هایی استفاده میکنه ؟
سایت http://hhvm.com بدون قند شکن که لود نمیشه حالا یا تحریم یا آی پیشو خشکوندن !
-
 Prerequisite knowledge and software for compiling:

    Basic Unix skills (being able to operate "make" and a C++ compiler)
    An GNU C++ compiler
    A web server
    Any module specific components (such as GD, PDF libs, etc.)
بر این اساس یعنی نیاز به یک وب سرور مثل آپاچی داره یعنی بازم من دقیقا متوجه نشدم این چیکار میکنه !
یعنی اول توسط وب سرور پی اچ پی تفسیر میشه بعد این فایل های تفسیر شده رو ذخیره میکنه و در بار های بعدی از اون استفاده میکنه ؟ اگر اینجوری نیست چرا نیاز به یک وب سرور داره ؟
صدای پلیس : هاپ هاپ

آفلاین ava

  • High Hero Member
  • *
  • ارسال: 1330
من نصبش کردم و وردپرس رو نصب کردم برای تست
avaom.ir
سرعت رومیتونید برسی کنید
وردپرس خام و بدون هیچ افزونه ای هست (اصلا وارد مدیریتش نشدم هنوز!)
صدای پلیس : هاپ هاپ

آفلاین محمد فدوی

  • Sr. Member
  • *
  • ارسال: 485
  • جنسیت : پسر
  • آغاز آزادی از رایانهٔ شخصی
    • آغاز آزادی از رایانهٔ شخصی
من نظرم اینه این ماشین مجازی به سمت ساپورت از HACK بره خیلی محبوب‌تر میشه. واقعا خیلی رشد داشته نسبت به PHP. حتی شاید اگه خود PHP هم توی ورژن جدیدش پل بزنه به HACK بد نباشه... (البته این از اون حرفا بود ;D)

نقل‌قول
اگر اینجوری نیست چرا نیاز به یک وب سرور داره ؟
مطمئن نیستم ولی به نظرم مفسرش دقیقا مثل PHP باشه. یعنی همونطور که ما Apache نصب میکنیم و Extention مربوط به PHP رو توی فایل کانفیگ Apache وارد (Include) میکنیم، این بار باید این کار رو در مورد ماشین مجازی انجام بدیم. تقریبا چیزی که توی Apache Tomcat برای Java اتفاق می‌افته. (اگر اشتباه میکنم اساتید اصلاح کنن)
اگر به بهداشت و فرهنگ رفتار با حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
وبلاگ شخصی من: http://fadavi.net

آفلاین ava

  • High Hero Member
  • *
  • ارسال: 1330
بله بعد نصب خودم فهمیدم
این برنامه در واقع یه چیزی هست مثل php-fpm و چندان از php-fpm سریع تر نیست چیزی در حدود 15 درصد سریع تره و سرعت 9 برابری رو شاید در قیاس با آپاچی و php-mod گفتن وگر نه چندان با nginx+php-fpm فرقی نداره
چون من خیل کار های دیگه رو سرورم کردم نمیتونم بنچ مارک بگیرم ازش به این آسونی و نمیشه سرعت رو با این اندازه گرفت باید سرور خام باشه و یه بار این و یه بار دیگه چیز دیگه نصب بشه و بنچ مارک گرفته بشه
به هر حال چندان تغیر شاخی نیست و به هیچ عنوان سرعت حتی قابل مقایسه با پایتون نیست چه برسه به سی !
صدای پلیس : هاپ هاپ

آفلاین محمد فدوی

  • Sr. Member
  • *
  • ارسال: 485
  • جنسیت : پسر
  • آغاز آزادی از رایانهٔ شخصی
    • آغاز آزادی از رایانهٔ شخصی
منم نظرم همینه... یعنی اگه واقعا سرعت رو حتی بتونه ۲ برابر کنه واسه PHP یعنی فاجعه!
من از HACK خوشم اومد ولی واقعا فریمورک‌هایی مثل Nodejs، Django، RubyOnRails و حتی فریمورک‌های مبتنی بر Scala رو ترجیح میدم. ای کاش تو ایران هم یکم بیشتر جون بگیرن.
« آخرین ویرایش: 26 مهر 1393، 06:00 ب‌ظ توسط MohamadF »
اگر به بهداشت و فرهنگ رفتار با حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
وبلاگ شخصی من: http://fadavi.net