How PHP Handles Multiple Requests Despite Being Single-Threaded

Other Blogs

Blogs ❯❯ PHP

Image could not load

PHP Execution Flow

आज हम बात करेंगे कि PHP कैसे multiple requests को handle करती है, जबकि PHP एक single-threaded language है। मतलब, PHP एक time पर सिर्फ एक काम कर सकती है, फिर भी वो multiple users कि requests को efficiently handle कर लेती है।

यह process काफी interesting है और समझना important है, especially अगर आप web development में new हो।

चलिए, step by step समझते हैं कि यह कैसे काम करता है।

1. PHP & Single-Threaded Nature

सबसे पहले, यह समझना जरूरी है कि PHP single-threaded है। मतलब PHP एक time पर सिर्फ एक request को process कर सकती है। जब एक request PHP server को मिलती है, तब PHP उस request को handle करने के लिए अपना execution start करती है।

जब एक request complete हो जाती है, तब ही दूसरी request को process किया जाता है।

इसका मतलब यह है कि अगर एक ही time पर multiple requests आयी , तो PHP को हर एक request को sequentially process करना पड़ेगा , एक के बाद एक।

पर, फिर भी PHP multiple users के requests को efficiently handle कर पाती है। आप सोच रहे होंगे कि यह कैसे होता है?

2. Web Server

PHP अपने आप में एक web server नहीं होती। PHP को execute करने के लिए एक web server चाहिए होता है, जैसे Apache या Nginx. Web server का काम होता है incoming HTTP requests को accept करना, उनको PHP script तक पहुंचाना , और फिर PHP कि output को user को return करना।

जब भी user किसी page को request करता है, web server पहली बार request को accept करता है, और फिर उस request को PHP interpreter को pass करता है, जो PHP code execute करता है।

जैसे ही PHP execution complete होता है, result को web server दुबारा से user तक send देता है।

3. Request-Response Cycle of PHP

PHP में request-response cycle काफी fast होता है, जो multiple requests को handle करने में help करता है। जब एक user का request server पर आता है, web server उस request को PHP process करने के लिए send करता है।

PHP अपने execution को complete करती है और result को response में send कर देती है, यह process इतना fast होता है कि एक second में कई requests process हो सकती हैं, एक के बाद एक।

इस process में PHP हर request के लिए एक new thread नहीं बनाती। मतलब, एक request के complete hone के बाद, दूसरी request के लिए old resources को clean up कर दिया जाता है।

इस तरह से PHP एक एक करके requests को handle कर पाती है।

4. Apache & PHP-FPM

ये सबसे important part है , PHP का multiple request handle करने के क्रम में।

जब बात आती है multiple requests handle करने कि, तो PHP के साथ एक और चीज़ जुडी होती है, जो कि है PHP-FPM (FastCGI Process Manager). PHP-FPM Apache और PHP के बीच एक bridge का काम करता है, जो एक request को handle करने के लिए एक अलग process start करता है।

PHP-FPM के अंदर, एक pool of workers create होता है, जो multiple requests को handle करने के लिए ready रहते हैं। जब एक request आती है, PHP-FPM अपने pool से एक available worker process को allocate कर देता है, जो उस request को process करता है।

यह worker processes एक time पर multiple requests को handle कर सकते हैं, जिसे आप एक तरह से parallel processing भी कह सकते हैं।

मतलब, एक single-threaded PHP भी, PHP-FPM के साथ, multiple requests को efficiently handle कर सकती है।

what is PHP-FPM Worker Pool ?

PHP-FPM में, worker pool का मतलब है कि multiple PHP processes (workers) का एक set, जो एक साथ एक या ज़्यादा requests को handle करते हैं। जब भी एक incoming HTTP request आती है, PHP-FPM एक available worker को उस request को process करने के लिए allocate कर लेता है।

Worker pool का size typically आप PHP-FPM configuration में set करते हैं, और यह setting आपके server कि hardware capabilities (जैसे CPU cores) और expected traffic volume के according से change कि जा सकती है।

  • PHP-FPM (FastCGI Process Manager) में "pool of workers" का concept machine के cores पर depend करता है, और यह काफी important है जब हम web server कि performance और scalability कि बात करते हैं।

  • हर worker एक अलग PHP process होता है जो request को handle करता है। अगर आपके machine में multiple CPU cores हैं, तो PHP-FPM ज़्यादा worker processes spawn कर सकता है।

  • अगर आपके पास 4 CPU cores हैं, तो आप 4 workers को simultaneously run कर सकते हैं। हर worker एक core पर run करेगा और एक request को process करेगा।

  • PHP-FPM में worker pool size को configure किया जाता है pm.max_children parameter के through. यह parameter यह define करता है कि एक time पर कितने workers maximum concurrently request handle कर सकते हैं।

5. Asynchronous Processing & Event Loop

PHP अपने nature से synchronous है, मतलब एक request को process करते वक्त, वो दूसरे request को नहीं देख सकती। लेकिन, अगर आपको real-time applications कि need है (जैसे chat apps या notifications), तो आप PHP में asynchronous processing use कर सकते हैं।

इसका मतलब है कि जब एक request PHP process कर रही होती है, तब दूसरी requests को parallel में process करने कि कोशिश कि जा सकती है।

इसके लिए, PHP में event-driven programming का concept use होता है। PHP में event loop create करने के लिए आपको ReactPHP या Swoole जैसे libraries का use करना पड़ता है।

यह libraries allow करती हैं PHP को asynchronous processing करने के लिए, जिसमे multiple requests एक ही time पर process कि जा सकती हैं, बिना किसी thread के।

Must readt php articles

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 5.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook

Your Thought ?

Please wait . . .

    Recent Blogs

    Loading ...

    0 Comment(s) found !