خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
SHOW FULL COLUMNS FROM `wp_options`

خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category', 'post_tag', 'post_format', 'hashtags') AND tr.object_id IN (1039) ORDER BY t.name ASC

PHP یا Node.js ؟ مساله این است!
  • شاخه: دسته‌بندی نشده    ::    بازدید: ۳۶۳۰
  • ۲۱

PHP یا Node.js ؟ مساله این است!

در این مطلب قصد داریم تا بعضی از ويژگی های Node.js و PHP رو که باعث میشه اونها رو دوس داشته باشیم بررسی کنیم. ببینید هدف این نیست که بگیم کدوم یکی بهتر از اون یکیه! چون واقعا هیچکس نمیتونه در این مورد نظر کلی بده. ما هم قصد نداریم این کارو بکنیم. فقط نگاهی کلی داریم به اون دسته از ویژگی‌های اونا که باعث میشن توسعه دهنده‌ها توی انتخاب زبان سرورسایدشون دچار سرگیجه بشن:

 

نقطه قوت PHP:‌ ترکیب کد با محتوا
خب من می‌خوام کمی متن به صفحه‌ی وبم اضافه کنم، یا یه ساختار if else رو بر اساس اون چیزی که از url دریافت می‌کنم مابین کدهام قرار بدم. یا شاید بخوام اطلاعاتی که از پایگاه داده می‌گیرم رو با یه سری نوشته‌های دیگه ترکیب کنم. تگ PHP رو باز کنین و کدنویسی رو در عرض چند ثانیه شروع کنین! نیازی هم به template خاصی نیست چون اینجا هر چیزی میتونه یه template باشه. نیازی به فایل‌های اضافی یا معماری‌های مشقت بار نیست، فقط کافیه سر انگشتاتون با منطق برنامه نویسی آشنا باشن.
نقطه قوت Node.js: جدا سازی مسائل
ترکیب کد با متن و محتوا گاهی وقتها میتونه عصای دستتون باشه. مطمئنا برای بار اول و دوم جالبه که بتونین کدهای HTML رو با PHP ترکیب کنین. اما خیلی زود کد شما از نظر منطقی به شکل افتضاحی در میاد. برنامه نویسان واقعی به برنامه شون ساختار اضافه می‌کنن و لایه ی دیزاین رو از لایه‌ی منطق تفکیک می‌کنن. این برای برنامه نویس‌های تازه کار یه نعمته که کدهای تمیز ببینن و به آسونی اونا رو درک کنن. فریم ورک‌هایی که روی node.js اجرا میشن توسط برنامه نویسایی ساخته شدن که، میدونن زندگی وقتی بهتر میشه که مدل ، ویو و کنترلر‌ها از هم جدا باشن. البته PHP هم فریمورک‌هایی داره که این کار و انجام میدن و نمیشه گفت این نقطه قوت فقط مختص node.js هست!
نقطه قوت PHP: ریشه‌ی قویتر
وب پر از کدهای PHP هستش. اکثر پلتفرم‌های پرطرفدار ساخت وبسایت‌ها با PHP نوشته شدن. مثل وردپرس یا جوملا و دروپال. حالا به اینا اضافه کنید این همه پلاگین رنگارنگی که واسشون نوشتن رو! کدهای PHP همه جا هستن و فقط کافیه دانلودشون کنین، تغییرشون بدین و بر حسب نیازهاتون ازشون استفاده کنین.

نقطه قوت Node.js: کد جدیدتر = ویژگی‌های مدرن‌تر
خب قبوله، هزاران فایل اوپن سورس PHP وجود دارن. اما نکته ی بامزه‌ش اینجاس که من پلاگین‌هایی از وردپرس رو می‌شناسم که هشت سالشون شده و هنوز امیدوارن و در واقع التماس می‌کنن که تو رو خدا یکی منو دانلود کنه! چه کسی دوس داره ساعتها و روزها و هفته‌ها وقتش و با کدی تلف کنه که بعد از این همه سال هنوز به روز نشده؟ پلاگین‌های Node.js نه تنها جدیدترن، بلکه با دانش کامل از آخرین دیدگاهها و دستاوردهای معماری نرم‌افزاری ساخته شدن. اونها بوسیله برنامه نویسایی ساخته شدن که به این درک رسیدن که اپلیکیشن‌های وب مدرن باید هوشمندی بیشتری رو به کاربر از خودشون نشون بدن. به بیان ساده تر: خیلی خفن هستن!
نقطه قوت PHP: (نوعی از) سادگی
PHP چیز زیادی لازم نداره. چند تا متغیر و تابع (نکته: هنوز کسی معادل فارسی مناسبی واسه function پیدا نکرده؟!) برای کار با رشته‌ها و اعداد کافیه. در واقع میشه گفت سنگین‌ترین کاری که PHP انجام میده انتقال اطلاعات از پورت 80 به دیتابیس و بالعکسه. این همون چیزیه که از PHP انتظار میره. PHP مقدار درست و صحیحی از پیچیدگی رو داره و کاری رو که پیچیده نیست، پیچیده ترش نمیکنه!
نقطه قوت Node.js: ترکیب Closureها و بیشتر
برای دونستن در مورد closure ها اینجا رو ببینید.
جاوااسکریپت ممکنه یه سری خصوصیاتی داشته باشه که دیوانه کننده به نظر برسه، اما بیشتر این خصوصیات باعث میشن جاوااسکریپت یه زبان مدرن باشه که از گرامر و سینتکس مدرنی و ویژگی‌های مفیدی مثل Closureها پشتیبانی می‌کنه. شما میتونین اون رو پیکربندی کنید و به راحتی توسعه بدین، کتابخونه‌های قدرتمندی مثل جی‌کوئری باهاش بسازین و توابع رو مثل آبجکت‌ها پاس بدین. پس چرا باید خودتونو محدود کنین؟
نقطه قوت PHP: هیچ اپلیکیشن کلاینتی نیاز نیست
همه ی صحبت‌هایی که در مورد استفاده از زبان مشترک در سمت مرورگر و سمت سرور میشه زیبا هستن، اما اگه نیاز به استفاده از هیچ زبانی روی مرورگر نباشه چی؟ اگه بخوایم اطلاعات رو روی فرم های HTML سوار کنیم چی؟ مرورگر این کار و انجام میده و دیگه با مشکلاتی مثل عدم اجرای رشته های جاوااسکریپتی که سعی میکنن یه صفحه رو روی مرورگر از طریق اجرای صدتا وب سرویس ایجاد کنن، روبرو نیستیم. HTML خالص خیلی راحت‌‌تر از هر چیز دیگه کارا رو پیش می‌بره و PHP خیلی عالی برای این کار بهینه سازی شده. چرا میخواین با اجرای جاوااسکریپت روی مرورگر خودتونو به دردسر بندازین؟
نقطه قوت Node.js: فراخوانی سرویس‌ها حجم کمتری از فراخوانی‌های سنگین PHP بر پایه‌ی HTML دارن
از اونجایی که اپلیکیشن‌های وب HTML5 که با ajax کار میکنن میتونن قسمت‌های متحرک زیادی داشته باشن، خیلی با حال و کاربردی هستن. تا وقتی کد جاوااسکریپت توی کَش مرورگر هست، تنها چیزی که توی سیم‌ها در حال جابجایی هست داده‌های جدید هست. دیگه خبری از یه تُن کد HTML نیست و دیگه لازم نیست صفحه رو مدام رفرش کنیم تا چیزای جدیدی ببینیم. فقط داده‌ها هستن که دارن عوض میشن. اگه میخواین یک اپلیکیشن تحت وب جذاب بسازین بهترین انتخاب جاوااسکریپته. Node.js ساخته شده تا فقط و فقط داده‌ها رو انتقال بده. اگه اپلیکیشن شما پیچیده و پر از داده‌ه است، Node.js یه ساختار خوب برای تحویل سریع داده ها داره.
نقطه قوت PHP: SQL
PHP و MySQL همیشه با هم هستن و اگه هم MySQL در دسترس نباشه، پایگاه داده‌های مبتنی بر SQL دیگه از طرف اوراکل و مایکروسافت هم هستن که میشه خیلی راحت با یه خرده تغییر توی کوئری‌ها بین اونا سوییچ کرد. دنیای بزرگ SQL محدود به مرز نیست و بسیاری از پروژه‌های بزرگ از دیتابیس های SQL استفاده می‌کنن. شاید بهترینِ بهترین‌ها نباشه، اما کارای بزرگی ازش برمیاد.
نقطه قوت Node.js: JSON
اگه مجبورین که با SQL در ارتباط باشین، Node.js هم کتابخونه‌هایی برای این کار داره. اما Node.js از JSON که در حد یه زبان بین‌المللی هست استفاده می‌کنه که میتونه با خیلی از پایگاه داده های NoSQL صحبت کنه. البته معنیش این نیست که شما نمیتونین از کتابخونه‌های کار با JSON توی PHP استفاد کنین، اما استفاده از JSON توی جاوااسکریپت با توجه به این که ساختارشون یکیه راحت تره. همین باعث میشه کلی از وقتتون رو صرفه جویی کنین.
نقطه قوت PHP: سرعت کدنویسی
برای خیلی از توسعه دهنده‌ها، نوشتن اپلیکیشن با PHP سریع‌تر به نظر میرسه. کامپایلر خاصی نیاز نیست، فایل JAR نیاز نداریم و قرار نیست از preprecessor ها استفاده کنیم. فقط ادیتور مورد علاقتون رو باز می‌کنین و یه تعداد فایل PHP رو توی دایرکتوری خودتون قرار میدین.
نقطه قوت Node.js: سرعت اولیه
نوشتن کد جاوااسکریپت کمی سخت‌تر میشه اگه بخواین پارانتزها و براکت‌های پیچیده رو بشمارین! اما وقتی تموم بشه، کد شما تبدیل به باقلوا میشه. مکانیزم callback فوق‌العاده‌س چون شما رو از سر و کله زدن با رشته‌ها نجات میده. هسته‌ی کار خیلی عالی ساخته شده و طراحی شده تا کاری رو که میخواین براتون انجام بده. از این بهتر؟
جمع بندی
برنامه نویس خوب کسیه که بتونه توی هر پلتفرمی برنامه‌ی خوب بنویسه و سرعت خودش و اپلیکیشنی که میسازه براش قابل قبول باشه و اگر هم نیاز شد بتونه بین پلتفرم‌های مختلف سوییچ کنه و کاراشو پیش ببره. پس درگیر این نباشین که چی بهتر و سریعتره، آستین‌ها رو بالا بزنین و شروع به نوشتن کنید!

+

مهدی علیپور

مهدی علیپور هستم. فارغ التحصیل مهندسی فناوری اطلاعات و توسعه دهنده PHP و دانشجوی تمام وقت جاوااسکریپت.

همچنین ممکن است دوست داشته باشید ...

خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (3231) ORDER BY t.name ASC

خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (3231) ORDER BY t.name ASC

خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('hashtags') AND tr.object_id IN (3231) ORDER BY t.name ASC

class="post-3231 post type-post status-publish format-standard has-post-thumbnail hentry">
۷
  • خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_format') AND tr.object_id IN (2775) ORDER BY t.name ASC

  • خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (2775) ORDER BY t.name ASC

    خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (2775) ORDER BY t.name ASC

    خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('hashtags') AND tr.object_id IN (2775) ORDER BY t.name ASC

    class="post-2775 post type-post status-publish format-standard has-post-thumbnail hentry">
    ۳
  • خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_format') AND tr.object_id IN (1217) ORDER BY t.name ASC

  • خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (1217) ORDER BY t.name ASC

    خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (1217) ORDER BY t.name ASC

    خطای پایگاه‌داده وردپرس: [Got error 28 from storage engine]
    SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('hashtags') AND tr.object_id IN (1217) ORDER BY t.name ASC

    class="post-1217 post type-post status-publish format-standard has-post-thumbnail hentry">
    ۲

    ۲۱ واکنش

    1. میلاد گفت:

      علی جان ممنون.عالی بود.

    2. Behrouz گفت:

      مطلب خوبی بود موفق و پبروز باشید

    3. مسعود گفت:

      عالی بود
      کاش در مورد سرعت پاسخ گویی به درخواست های سرور در nodejs نسبت به PHP هم می نوشتید.

      راستی preprecessor ، نه proprecessor ! 🙂

    4. علی.ب گفت:

      سلام
      متاسفانه از اونجایی که جفت زبون ها از زبون های اصلی من هست + جاوا، به هیچ عنوان نتونستم ما متن ارتباط برقرار کنم.
      خیلی از مقایسه ها منطقی نیست. نویسنده با مفهوم closure توی php آشنا نیست. خود mongoDb برای php هم اکستنشن رسمی داده.
      ساختار nodejs به صورت پیشفرض event driven و async هست (هرچند برای php هم راه حل های زیادی وجود داره) برای فرآیندهای async کار با nodejs خیلی راحت تره.
      زبان کوئری دیتابیس های noSQL همه json نیست مثل orientDB که sql هست.

      • مهدی علیپور گفت:

        با سلام. البته اینکه نویسنده با مفهوم closure آشنا نیست نظر شماست. هدف ما هم همونطور که ابتدا و انتهای متن بهش اشاره شد مقایسه نیست. همه چیز رو هم همگان ندانند و هدف این سایت هم به اشتراک گذاری دانسته هامون هست چه در بخش مطالب و چه در بخش نظرات. ممنون.

    5. مهدی گفت:

      عالی بود.
      البته درمورد پیچیده بودن کد های node.js موافق نیستم، میتونید از ویرایشگر های متن های هوشمند رایگان مثل sublime text , atom و… استفاده کنید که باعث نظم تو کد نویسی میشن.
      البته بهترین ide برای node.js و جاوا اسکریپت به نظرم webstorm هست. شما کد ها رو مینویسی و یه ctrl + shift + l میزنی و کد ها کاملا مرتب میشه 🙂

      یه نکته هم درباره جاوا اسکریپت بگم شاید رو کسی که میخواد بین node.js و php انتخاب کنه تاثیر گذار باشه
      شما با جاوا اسکریپت میتونید سرور + کلاینت + اپلیکیشن برای گوشی های هوشمند بنویسید.اگه بتونید این زبان دوست داشتنی رو یاد بگیرید مطمئنن یه آچار فرانسه برنامه نویسی میشید. حتی فریمورک های بازی سازی هم برای جاوا اسکریپت وجود داره.

    6. Ahmad گفت:

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

      • مهدی علیپور گفت:

        با سلام. نه الزامی نیست که فقط توی برنامه های با کلاینت بالا استفاده بشه اما از قدیم گفتن هر کسی را بهر کاری ساخته اند! متوجه سوال دوم شما هم نشدم. نود جی اس خودِ جاوااسکریپت هست و اصلا قرار نیست به جای جاوااسکریپت استفاده بشه. شایدم منظورتون این بوده که میشه به جای پی اچ پی استفاده کرد؟ که در این صورت هم پاسخ مثبت هست و شما می تونین کل عملیات سمت سرور خودتون رو به Node.js محول کنید. سپاس.

        • ahmad گفت:

          واقعا ممنون 😉
          یه سوال دیگه
          بنظرتون این ترتیب برای یادگیری طراحی وب درسته؟اگه نه بنظر خودتون باید کدوما رو یاد گرفت؟
          اچ تی ام ال
          سی اس اس
          چاوا اسکریپت
          جی کوئری
          نود جی اس
          ممنون میشم راهنمایی کنید.

          • مهدی علیپور گفت:

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

    7. محمدجعفر گفت:

      «مکانیزم callback فوق‌العاده‌س چون شما رو از سر و کله زدن با رشته‌ها نجات میده.»
      این جمله رو میشه بیشتر توضیح بدین؟ منظور از رشته قطعا رشته‌ی کاراکتری که نیست، پس چیه؟

    8. حامد گفت:

      سلام من الان با php کار میکنم و جاوا اسکریپت و جی کوئری رو تا حدودی بلدم . اما با نود و انگولار آشنایی ندارم . میشه یه توضیح کلی در موردشون بدید؟ این فریم ورک ها هم مثل جی کوئری هستند؟

    9. نعمان گفت:

      علی جان ممنون

    10. محمد مهدی رفیعی گفت:

      سلام
      یه سوالی داشتم
      میخواستم بدونم بعد از یادگیری JavaScript میشه سریع بدون اینکه رویه JQuery مانور بدیم بریم سراغ Angularjs ؟

    11. jamshid گفت:

      nodejs هیج ربطی به فرینورک jquery نداره و با آشنایی با زبان java script میتونی کارت شروع کنی

    12. حمید گفت:

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

    پاسخ دهید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *