How does work the PHP code behind the scenes?

Jamir Hossain
5 min readNov 28, 2023

--

PHP (Hypertext Preprocessor) প্রোগ্রামিং ভাষা । এটি 1994 সালে Rasmus Lerdorf নামে একজন Programmer ডেভেলপ করেছিলেন। তবে এটি প্রথম পাবলিক রিলিজ হয় 1995 সালে । তাবে আজকে আমরা জানার চেস্টা করব যে PHP code behind the seen এ কিভাবে run হয়।

প্রথমে আমরা একটা simple example দিয়ে শুরু করি।

echo "Hello world";

এই code যদি আমরা আমাদের computer এর terminal এ run করি তাহলে আমরা output হিসেবে “Hello world” দেখতে পাব। এখন কথা হচ্ছে যে আমরা তো জানি যে আমাদের computer machine code অর্থাৎ 0, 1 ছাড়া অন্য কিছুই বুঝে না। তাহলে এই code আমাদের computer কিভাবে বুজতে পারল?

আসলে আমাদের লেখা code computer বুজতে পারে না বলে আমাদের এই কোডকে computer এর ভাষাতে translate/transpile করে দিতে হয়। আর এই translate এর কাজ করার জন্য মাঝখানে আরেকটি Layer কাজ করে যাকে আমরা compiler/interpreter বলে থাকি। তাহলে Compiler এবং Interpreter কি?

Compiler এবং Interpreter দুটি অনুবাদক সফ্টওয়্যার বা প্রোগ্রাম, যা প্রোগ্রামিং ভাষার সোর্স কোডকে মেশিন কোডে পরিণত করে। অর্থাৎ আমাদের লেখা কোড যেটা মানুষ বুঝতে পারে সেই কোডকে এই কম্পাইলার অথবা ইন্টারপ্রেটর মেশিন কোডে অর্থাৎ 0 এবং 1 এ রূপান্তর করে কম্পিউটারকে দেয় যা পরবর্তীতে কম্পিউটার তা বুঝতে পারে এবং সেই অনুযায়ী আমাদেরকে আউটপুট দেয়। তাহলে এখন এই ইন্টারপ্রেটর বা কম্পাইলার সম্পর্কে আরেকটু বিস্তারিত জানা যাক।

প্রথমে আসি ইন্টারপ্রেটর কি এবং কিভাবে কাজ করে। Interpreter হলো এমন এক প্রকার অনুবাদক, যা কোনো হাই লেভেল Language এ লিখা সমস্ত source code কে line by line read করে এবং প্রতিটা line read করার পরেই তাকে machine code এ রুপান্তর করে। যদি code read করার সময় কোনো line এ এরর থাকে তাহলে সে অখানেই থেমে যায় এবং Programmer কে সহযেই সেই এরর টি ধরিয়ে দিতে পারে। অর্থাৎ এইখানে Debug করা সহজ। কিন্তু এই Process এ যেহেতু প্রটিটা line by line read করতে হয় তাই এটি তুলনা মুলক ধীর গতির Process.

এখন আসি কম্পাইলার কি এবং কিভাবে কাজ করে। Compiler হলো এমন এক প্রকার অনুবাদক, যা কোনো হাই লেভেল Language এ লিখা সমস্ত source code কে একসাথে machine code এ রুপান্তর করে। এই ক্ষেত্রে যদি code এ কোনো এরর থাকে সেটিও compile করে ফেলবে পর্বতীতে এটি run time এ গিয়ে এরর দিবে। এর ফলে Programmer সহযেই সেই এরর টি ধরতে পারে না। অর্থাৎ এইখানে Debug করা কঠিন। কিন্তু এই Process এ যেহেতু সমস্ত source code একসাথে machine code এ রুপান্তর হয় তাই এটি তুলনা মুলক দ্রুত গতির Process.

তাহলে এখন প্রশ্ন হতে পারে যে PHP কি compiled নাকি interpreted language?

এর উত্তর হল PHP একটি ইন্টারপ্রিটেড প্রোগ্রামিং ভাষা। এই ইন্টারপ্রিটেড নির্বাচন করা হয়েছে কারণ PHP কোড লাইন বাই লাইন Read করে এবং রান করে। এছাড়াও PHP ডাইনামিক ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয় এবং সর্ভারে এই স্ক্রিপ্ট বিভিন্ন সময় বিভিন্ন প্রক্রিয়া সম্পন্ন করে থাকে, যা ইন্টারপ্রিটেড ভাষার একটি গুরুত্বপূর্ণ বৈশিষ্ট্য।

নিচেন উদাহারণ টি লক্ষ করি।

প্রথম block এর মধ্যে রয়েছে আমাদের লিখা code. এই code প্রথমে Interpreter এর মধ্যে যায়। তার পরে Interpreter এই code কে execute করে। Interpreter code execute করার সময় line by line read করে এবং প্রতিটা line read করার পরেই তাকে machine code এ রুপান্তর করে। code line by line read করার সময় যদি কোনো এরর থাকে তাহলে সে ওখানেই থেমে যায় আমাদের কে সেই এরর টি throw করে।

তাহলে এখন কিছুটা ধারণা হলো যে High label বা আমদের লেখা code computer কি ভাবে বুঝতে পারে এবং run করে। এখন আরেকটু বিস্তারিত ভাবে আলোচনা করা যাক।

আমরা PHP Script কে দুটি environment এ run করতে পারি। একটি হলো CLI(Command Line Interface) এর মাধ্যমে অপরটি হলো Web Server এর মাধ্যমে। এখন CLI এর মাধ্যমে কিভাবে php code run হয়?

নিচেন উদাহারণ টি লক্ষ করি।

আমাদের computer এ বিভিন্ন Application বা Program থাকে যেগুলোকে আমরা আমাদের বিভিন্ন প্রয়োজনে run করে থাকি। কিন্তু যখন আমরা আমাদের Application বা Program গুলোকে run করতে যাই তখন তারা নিজে নিজে run হতে পারে না বরং তারা আমাদের computer এর operating system এর মাধ্যমে run হয়ে থাকে। এখন আমরা যদি PHP এর মাধ্যমে কোনো কোড লিখি তাহলে সেটিও তো একটা প্রোগ্রাম যা আমরা computer এর terminal এর মাধ্যমে run করতে পারি। তাই যখন আমাদের code terminal এর মাধ্যমে run করি তখন এটিও operating system এর মাধ্যমেই run হয়ে থাকে। এখন কথা হলো এই Application বা Program অথবা আমাদের লেখা Program কিভাবে আমাদের computer এর operating system এর সাথে communicate করে?

এইখানে operating system এর সাথে communicate করার জন্য যে মাধ্যম ব্যবহার করা হয় সেটি হলো OS API অর্থাৎ operating system এর api এর মাধ্যমেই Application বা Program গুলো computer এর operating system এর সাথে communicate থাকে যা উপরের চিত্রে কিছুটা দেখানোর চেষ্টা করেছি। তাহলে আমরা কিছুটা ধারণা পেলাম যে আমাদের কম্পিউটারের টার্মিনাল মাধ্যমে PHP কোড কিভাবে রান হয়।

এখন Web Server এর মাধ্যমে কিভাবে php code run হয়?

নিচেন উদাহারণ টি লক্ষ করি।

প্রথমে Client/Browser থেকে আমরা Web Server এ Request পাঠাই, তার পর Web Server PHP Engine এর সাথে কিন্তু সরাসরি Communicate করতে পারে না। Web Server এবং PHP Engine এদের মধ্যে Communication এর জন্য এদের মাঝখানে আরেকটি Layer কাজ করে যাকে SAPI বা Server API বলে। SAPI হিসেবে বিভিন্ন প্রটোকল ব্যবহার করা হয় যেগুলার উপর Base করে Web server PHP Engine এর সাথে Communicate করে। এই প্রটোকল গুলো হলো CGI, FastCGI, mode_php, FPM ইত্যাদি। এই প্রটোকল গুলো থেকে যেকোনো একটা প্রটোকল ব্যবহার করে Web Server এবং PHP Engine এদের মধ্যে Communication করা যায়। তবে PHP Script run করার জন্য সবচেয়ে জনপ্রিয় ২ টি Web Server হলো Apache এবং Nginx Server

  1. Apache Server SAPI হিসেবে mode_php প্রটোকল ব্যবহার করে
  2. Nginx Server SAPI হিসেবে FPM প্রটোকল ব্যবহার করে

তাহলে আমরা এখন আরেকটু ধারণা পেলাম যে PHP কোড কিভাবে ওয়েব সার্ভারে রান হয়। আশা করি উপরের উল্লেখিত বিষয়গুলোর উপর ভিত্তি করে কিছুটা বুঝতে পেরেছেন যে php কোড আসলে behind the scenes এ কিভাবে কাজ করে।

তাহলে আজ এ পর্যন্তই থাক, কথা হবে অন্য কোনো লেসনে।

--

--