"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > PHP में समवर्तीता और समांतरता

PHP में समवर्तीता और समांतरता

2024-07-31 को प्रकाशित
ब्राउज़ करें:171

Concurrency and Parallelism in PHP

समवर्तीता और समानता आधुनिक प्रोग्रामिंग में आवश्यक अवधारणाएं हैं, जो अनुप्रयोगों को इंटरलीव्ड निष्पादन (संगामिति) या एक साथ निष्पादन (समानांतरता) के माध्यम से एक साथ कई कार्य करने की अनुमति देती हैं। PHP, जो मुख्य रूप से अपने तुल्यकालिक निष्पादन मॉडल के लिए जाना जाता है, विभिन्न तकनीकों के माध्यम से इन प्रतिमानों का समर्थन करने के लिए विकसित हुआ है।

PHP का मानक निष्पादन मॉडल

PHP परंपरागत रूप से एक तुल्यकालिक निष्पादन मॉडल का पालन करता है, खासकर जब एक विशिष्ट वेब सर्वर सेटअप में अपाचे के साथ उपयोग किया जाता है। इस मॉडल में, प्रत्येक HTTP अनुरोध को एक एकल PHP प्रक्रिया द्वारा नियंत्रित किया जाता है। किसी अनुरोध को संसाधित करने में शामिल चरणों में शामिल हैं:

  1. अपाचे एक HTTP अनुरोध प्राप्त करता है और इसे PHP को अग्रेषित करता है।
  2. PHP स्क्रिप्ट को शुरू से अंत तक एक ही थ्रेड में निष्पादित करता है
  3. PHP अपाचे को आउटपुट लौटाता है, जो फिर क्लाइंट को प्रतिक्रिया भेजता है।

यह मॉडल सरलता और समझने में आसानी सुनिश्चित करता है लेकिन समानांतर निष्पादन या एक साथ कई कार्यों को संभालने वाले कार्यों के लिए अक्षम हो सकता है।

PHP में समवर्तीता और समांतरता का विकास

जैसे-जैसे वेब एप्लिकेशन अधिक जटिल होते गए, PHP में समवर्ती और समानांतर निष्पादन की आवश्यकता बढ़ती गई। आइए इन प्रतिमानों को प्राप्त करने के लिए PHP द्वारा प्रदान की जाने वाली तकनीकों का पता लगाएं।

1. सिंक्रोनस कोड

सिंक्रोनस कोड निष्पादन का सबसे सरल रूप है जहां कार्यों को एक के बाद एक निष्पादित किया जाता है।

echo "Synchronous Code Example:\n";
function synchronousFunction() {
    for ($i = 0; $i 



इस उदाहरण में, लूप का प्रत्येक पुनरावृत्ति पुनरावृत्तियों के बीच एक सेकंड की देरी के साथ क्रमिक रूप से निष्पादित होता है। यह दृष्टिकोण सीधा है लेकिन I/O-बाउंड या CPU-गहन कार्यों के लिए अक्षम है जो समानांतर निष्पादन से लाभान्वित हो सकते हैं।

2. एक प्रक्रिया फोर्किंग

फोर्किंग एक नई प्रक्रिया (चाइल्ड) बनाता है जो मूल प्रक्रिया (पैरेंट) के साथ-साथ चलती है। यह कार्यों को समानांतर करने के लिए उपयोगी है।

echo "\nForking Process Example:\n";
function forkProcess() {
    $pid = pcntl_fork();
    if ($pid == -1) {
        die('could not fork');
    } else if ($pid) {
        echo "Parent Process: PID $pid\n";
        pcntl_wait($status); // Protect against Zombie children
    } else {
        echo "Child Process: Hello from the child process!\n";
        exit(0);
    }
}
forkProcess();

इस कोड में, pcntl_fork() एक चाइल्ड प्रोसेस बनाता है। पैरेंट और चाइल्ड प्रक्रियाएं समवर्ती रूप से निष्पादित होती हैं, जिससे समानांतर कार्य निष्पादन की अनुमति मिलती है। ज़ोंबी प्रक्रियाओं के निर्माण से बचने के लिए मूल प्रक्रिया चाइल्ड प्रक्रिया के समाप्त होने की प्रतीक्षा करती है।

3. सूत्रण

PHP की थ्रेडिंग क्षमताएं pthreads जैसे एक्सटेंशन के माध्यम से उपलब्ध हैं। थ्रेड्स प्रक्रियाओं की तुलना में हल्के होते हैं और समान मेमोरी स्पेस साझा करते हैं, जो उन्हें साझा डेटा की आवश्यकता वाले कार्यों के लिए उपयुक्त बनाता है।

if (!class_exists('Thread')) {
    die("Threads are not supported in this PHP build\n");
}

echo "\nThreading Example:\n";
class MyThread extends Thread {
    public function run() {
        for ($i = 0; $i start();
$thread->join();

यह उदाहरण थ्रेड का विस्तार करने वाले MyThread वर्ग को परिभाषित करता है। रन विधि को एक नए थ्रेड में निष्पादित किया जाता है, जो मुख्य थ्रेड के साथ समवर्ती रूप से चलता है। यह दृष्टिकोण I/O-बाउंड संचालन के लिए उपयोगी है जहां थ्रेड संसाधनों की प्रतीक्षा को संभाल सकते हैं।

4. जेनरेटर

जेनरेटर सरल सह-दिनचर्या को लागू करने का एक तरीका प्रदान करते हैं, जिससे कार्यों को पूरे कार्यक्रम को अवरुद्ध किए बिना पुनरावृत्त रूप से परिणाम प्राप्त करने की अनुमति मिलती है।

echo "\nGenerators Example:\n";
function simpleGenerator() {
    yield 'First';
    yield 'Second';
    yield 'Third';
}

$gen = simpleGenerator();
foreach ($gen as $value) {
    echo "Generator Yielded: $value\n";
}

जेनरेटर एक समय में एक मान उत्पन्न करने के लिए यील्ड कीवर्ड का उपयोग करते हैं, जिससे फ़ंक्शन को रोका और फिर से शुरू किया जा सकता है, जिससे सहकारी मल्टीटास्किंग की सुविधा मिलती है।

PHP ने समकालिकता और समानता के विभिन्न रूपों का समर्थन करने के लिए अपनी तुल्यकालिक जड़ों से एक लंबा सफर तय किया है। जबकि सिंक्रोनस कोड कई उपयोग के मामलों के लिए सरल और प्रभावी रहता है, फोर्किंग प्रक्रियाओं, थ्रेडिंग और जनरेटर का उपयोग करने जैसी तकनीकें जटिल, समानांतर कार्यों को कुशलतापूर्वक संभालने के लिए नई संभावनाएं खोलती हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/francescoagati/concurrency-and-parallelism-in-php-6fc?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3