Kaptain Kitty
انتشار :۱۳ بهمن ۱۳۹۳
بازدید :1586 بار

PHP هنوز جایگاه خود را از دست نداده است اما با ظهور Node.js توجه کمتری به PHP می شود.

وقتی که در سال ۲۰۰۰ اینترنت همه گیر شد، همه ی برنامه نویسان با PHP کار می کردند و این زبان رو به تحول و بهتر شدن بود. زیرا:

  • Php زبان تفسیری بود و مانند C++ یا جاوا نیاز به کامپایل کردن کد منبع نداشت.
  • می توان از طریق ترکیب php با فایل های تمپلیت HTML و با استفاده از تگ های مارک آپ <?php … ?> از این زبان به طور مستقیم در HTML استفاده کرد
  • ماهیت کاربردی دارد و یادگیری آن بسیار ساده تر از برنامه نویسی شیء گرا می باشد.

با گذشت سال ها، PHP و اپلیکیشن های آن تبدیل به یک فن آوری وحشتناک شدند که آسیب پذیر بودن در برابر تهدیدات امنیتی (مانند injection های SQL)، فقدان ثبت پکیج های مرکزی (که با ظهور Compser این مشکل حل شد)، API های ناسازگار و عملکرد ضعیف از ایرادات این زبان بود. جایگزین های بهتری برای PHP وجود دارد مانند Ruby on Rails و Django که البته هیچ کدام آنها مثل Node.js قابل دسترس نیستند.

برای آن دسته از افرادی که با پلت فرم Node.js آشنایی ندارند یا در مورد آن شنیده اند اما فرصت کار با آن را نداشته اند، باید گفت: عملکرد Node.js مشابه با ترکیب PHP + Apache یا ASP + IIS stack می باشد.

این روز ها Node.js حرکتی رو به رشد را آغاز کرده است. این پلتفرم از جاوا اسکریپت استفاده می کند و کاملا کاربردی می باشد و مکانیسم non-blocking I/O در این پلتفرم امکان عملکرد فوق العاده بهتری را می دهد. پلتفرم Node.js دارای راه حل Package Manager و ECMAScript (جاوا اسکریپت) میباشد.

به دلیل این که Node.js یک تکنولوژی سطح پایین می باشد، قابل مقایسه ی مستقیم با فریم ورک های پیچیده مانند Struts، Rails یا Django نیست.

بنابراین بسیاری از افراد، خواه برنامه نویس خواه کارآفرین، اغلب با این تصمیم رو به رو می شوند که “از کدام تکنولوژی باید استفاده کنند”. در این مقاله به مقایسه ی PHP و Node.js می پردازیم و آنها را از زوایای مختلف مورد ارزیابی قرار می دهیم که شامل موارد زیر می باشد:

  • Syntax (گرامر)
  • Context Switch
  • ماژول ها
  • اکوسیستم
  • فریم ورک ها
  • اپلیکیشن های Real-time
  • اپلیکیشن های دیتابیس
  • اپلیکیشن های خدماتی Third-party (خارجی)
  • وب سرور ها
  • هاستینگ
  • عملکرد

Syntax

هر دو پلتفرم از طریق  php  -i  $ و  node $ به رابط خط فرمان دسترسی دارند. تکه کد زیر پیغام “Hello World” را در PHP نمایش می دهد:

[codesyntax lang=”php”]

echo 'Hello World';

[/codesyntax]

کد زیر نیز همین نتیجه را برای Node.js در پی خواهد داشت:

[codesyntax lang=”php”]

console.log('Hello World');

[/codesyntax]

نکته: در جاوا اسکریپت استفاده از سمیکالن (;) اختیاری است مگر میان حلقه ها و قبل از عبارات (IIFE).

اسکریپت تابع sleep در php به صورت زیر است:

 

[codesyntax lang=”php”]

echo "a"."\n";

sleep(2);

echo "b"."\n";

echo "c"."\n";

[/codesyntax]

نتیجه ی کد بالا به این شکل خواهد بود:

[codesyntax lang=”php”]

A

[/codesyntax]

و بعد از یک تاخیر دو ثانیه ای، نتیجه ی زیر حاصل خواهد شد:

 

[codesyntax lang=”php”]

b

c

[/codesyntax]

 

اگر بخواهیم این کد را در Node.js بازنویسی کنیم، به این صورت خواهد بود:

 

[codesyntax lang=”php”]

console.log('a')

setTimeout(function() {

  console.log('b')

 },۲۰۰۰)

console.log('c')

[/codesyntax]

این کد نتیجه ی زیر را نشان خواهد داد:

 

[codesyntax lang=”php”]

a

c

[/codesyntax]

 

و بعد از یک تاخیر دو ثانیه ای، این نتیجه پدیدار خواهد شد:

[codesyntax lang=”php”]

B

[/codesyntax]

نکته: در جاوا اسکریپت، () console.log به صورت خودکار علامت انتهای خط را اضافه می کند.

حلقه ی loop در php به این صورت خواهد بود:

 

[codesyntax lang=”php”]

for ($i = 1; $i <= 10; $i++) {

  echo $i;

}

[/codesyntax]

 

این کد ها در Node.js تا حدودی مشابه است:

 

[codesyntax lang=”php”]

for (var i = 0; i <= 10; i++) {

  console.log(i);

}

[/codesyntax]

 

برای ایجاد یک آرایه در php کد زیر را می نویسیم:

 

[codesyntax lang=”php”]

$users = array(

  array('name' => 'John', 'id' => 3940),

  array('name' => 'Peter', 'id' => 8904)

);

[/codesyntax]

 

برای ایجاد یک آرایه در Node.js کد زیر را می نویسم:

 

[codesyntax lang=”php”]

var users = [

{ name: 'John', id: 3940 },

{ name: 'Peter', id: 8904 }

]

[/codesyntax]

 

برای تکرار یک آرایه در php از کد زیر استفاده می کنیم:

 

[codesyntax lang=”php”]

for($i = 0; $i < count($users); ++$i) {

  $users[$i]['id'] = mt_rand(000000, 999999);

}

[/codesyntax]

 

برای تکرار یک آرایه در Node.js از کد زیر استفاده می کنیم:

 

[codesyntax lang=”php”]

for (var i; i < arr.length; i++) {

    users[i] = Math.floor(Math.random()*1000000);

}

[/codesyntax]

 

در حالت تابعی کد به صورت زیر خواهد بود:

 

[codesyntax lang=”php”]

users.forEach(function(user, i){

  users[i] = Math.floor(Math.random()*1000000);

})

[/codesyntax]

 

برای اعلام یک تابع در php از کد زیر استفاده می کنیم:

 

[codesyntax lang=”php”]

function hello($name) {

  echo "Hi ".$name;

}

hello("Peter"); //outputs Hi Peter

[/codesyntax]

 

برای اعلام یک تابع در Node.js از کد زیر استفاده می کنیم:

 

[codesyntax lang=”php”]

function hello(name) {

  console.log('Hi' + name);

}

hello('Peter'); //outputs Hi Peter

[/codesyntax]

 

برای اعلام یک شیء جدید در php از کد زیر استفاده می کنیم:

 

[codesyntax lang=”php”]

class foo {

    function do_foo()  {

        echo "Doing foo.";

    }

}

 

$bar = new foo;

$bar->do_foo();

[/codesyntax]

 

برای اعلام یک شیء جدید در Node.js از کد زیر استفاده می کنیم:

 

[codesyntax lang=”php”]

var foo = function () {

  return {

    do_foo: function () {console.log('Doing foo');}

  };

};

 

var bar = foo();

bar.do_foo();

[/codesyntax]

 

نکته: هیچ کلاسی در Node.js/JavaScript وجود ندارد زیرا object ها به صورت مستقیم از object های دیگر ارث بری می کنند (ارث بری وابسته به نمونه اصلی). الگوهای نمونه برداری مانند الگوهای شبه کلاسی (pseudo-classical)، تابعی (بالا) و کلاسی نیز وجود دارد.

کد مربوط به دیتابیس با کتابخانه ی ارتباطی PDO دیتابیس در php به این صورت است:

 

[codesyntax lang=”php”]

$pdo = new PDO('sqlite:users.db');

$stmt = $pdo->prepare('SELECT name FROM users WHERE id = :id');

$stmt->bindParam(':id', $_GET['id'], PDO::PARAM_INT); //<-- Automatically sanitized by PDO

$stmt->execute();

[/codesyntax]

 

همین اسکریپت با کتابخانه ی Mongoskin MongoDB در پلتفرم Node.js به این صورت خواهد بود:

 

[codesyntax lang=”php”]

//assuming we use Connect/Express middleware for req.query

var db = require('mongoskin').db('localhost:27017/db');

db.collection('users').find({_id: req.query.id}).toArray(function(err, results) {

    if (err) throw err;

    console.log(results);

});

[/codesyntax]

 

ادامه ی این مقاله را در آدرس زیر پیگیری نمایید:

مقایسه ی زبان های برنامه نویسی PHP و Node.js- قسمت دوم

php در مقابل node برنامه نویسی node js برنامه نویسی php برنامه نویسی تحت وب پلت فرم node js ساخت وب اپلیکیشن فریم ورک node js فریم ورک php مقایسه ی node و php وب اپلیکیشن های حرفه ای
مطالب مرتبط

مدیران وب‌سایت‌ها، مخصوصا آنهایی که در کسب و کارهای کوچک یا سازمان‌هایی بدون نیروی تخصیص یافته به این بخش و متخصصان حوزه‌ آی تی اغلب از اصول اولیه مبحث امنیت چشم‌پوشی می‌کنند. این امر می‌تواند در عصر مدرن نه تنها از حیث حملات مستقیم هکری بلکه از نظر حملات اسکریپتی که در مقابل مجموعه‌ای از اهداف بی انتها و تصادفی رخ می‌دهد هم خطرناک باشد. اصلا مهم نیست که وب‌سایت شما تا چه حد کوچک و نسبتا بی اهمیت است، در هر صورت می‌تواند هدف حملات هکری باشد و چه شما فردی باشید که سایت را نوشته و یا فردی که آن را مدیریت می‌کند، احتمالا با این چند نکته اولیه در حوزه‌ی امنیت وب آشنا نباشید. در این مقاله به این نکات می‌پردازیم.

مایکروسافت سخت در تلاش است برای مرورگر اج جایی در میان سایر رقبای خود پیدا کند. تبلیغاتی که در ویندوز ۱۰ نمایش داده می شوند، ادعا می کنند که مرورگر اج از مرورگرهای کروم و فایرفاکس امن تر است.

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

ابزارهایی که به صورت پیش‌فرض بر روی سی‌پنل نصب هستند، شامل وب‌سرور آپاچی، پی‌اچ‌پی، مای‌اس‌کیوال، پرل، پایتون و بایند (دی‌ان‌اس) می‌شود، همجنین ایمیل‌هایی که به صورت پیش‌فرض پشتیبانی می‌شوند شامل پاپ۳، اس‌ام‌تی‌پی، آی‌ام‌ای‌پی (قرارداد پیام‌گزینی) هستند. سی‌پنل بطور معمول به روی درگاه ۲۰۸۲ و به صورت اس‌اس‌ال بر روی ۲۰۸۳ قابل دسترسی است.

فعالیت استارتاپ پوشه بدین صورت می باشد که اگر شما برای کسب و کار خود اپلیکشینی راه اندازی نمودید و تمایل به ارسال اعلان (پوش نوتیفیکیشن – Push Notification) های مختلف و همچنین دریافت آمار دقیقی از اپلیکیشن خود داشته باشید می توانید از این سرویس استفاده نمایید.

نظراتتان را برایمان بنویسید

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

مطالب ما تو این شبکه های اجتماعی هم پخش میشه