धीमी व्यवसायिक प्रसंस्करण

कभी-कभी हमें धीमे व्यवसाय का सामना करना पड़ता है, अन्य सभी अनुरोध प्रसंस्करण पर प्रभाव नहीं डालने के लिए, इन व्यवसायों को समाप्त करने के लिए विभिन्न समाधानों का उपयोग किया जा सकता है।

संदेश कतार का उपयोग

रेडिस कतार स्टोम्प कतार को देखें

फायदे

आकस्मिक विशाल व्यापार प्रसंस्करण अनुरोधों का सामना कर सकते हैं

नुकसान

सीधे रूप से ग्राहक को परिणाम वापस नहीं कर सकते। परिणाम पश्चात सेवा के साथ समर्थन के बाहर, उदाहरण के लिए webman/push परिणाम को धकेलने के लिए उपयोग किया जाना चाहिए।

नया HTTP पोर्ट जोड़ें

नोट
यह विशेषता webman-framework>=1.4 की आवश्यकता है

धीमे अनुरोध को संसाधित करने के लिए नया HTTP पोर्ट जोड़ें, ये धीमे अनुरोध इस पोर्ट की द्वारा विशेष एक समूह प्रक्रिया द्वारा प्रसंस्कृत किए जाते हैं, प्रसंस्क्रित होने के बाद परिणाम सीधे ग्राहक को लौटाए जाते हैं।

फायदे

डेटा को सीधे ग्राहक को लौटा सकते हैं

नुकसान

आकस्मिक विशाल अनुरोध का सामना नहीं कर सकते हैं

क्रियान्वयन चरण

config/process.php में निम्नलिखित कॉन्फ़िगरेशन जोड़ें।

return [
    // ... अन्य कॉन्फ़िगरेशन यहाँ कोड की गई ...

    'task' => [
        'handler' => \Webman\App::class,
        'listen' => 'http://0.0.0.0:8686',
        'count' => 8, // प्रक्रियाओं की संख्या
        'user' => '',
        'group' => '',
        'reusePort' => true,
        'constructor' => [
            'request_class' => \support\Request::class, // अनुरोध कक्ष सेटिंग
            'logger' => \support\Log::channel('default'), // लॉग उदाहरण
            'app_path' => app_path(), // app डायरेक्टरी स्थान
            'public_path' => public_path() // सार्वजनिक डायरेक्टरी स्थान
        ]
    ]
];

इस तरह से धीमे इंटरफ़ेस http://127.0.0.1:8686/ इस समूह प्रक्रिया से गुजर सकते हैं, अन्य प्रक्रियाओं के व्यापार प्रसंस्करण को प्रभावित नहीं करते।

अंतर्दृष्टि से पोर्ट का अंतर ग्राहक को पता नहीं चलने देने के लिए, आप एक प्रॉक्सी को 8686 पोर्ट तक nginx में जोड़ सकते हैं। मान लें कि धीमे अनुरोध अनुरोध पथ के जरिए हैं /tast शुरू होते हैं, पूरी ऍन्गिन्क विन्यास निम्नलिखित हो सकता है:

upstream webman {
    server 127.0.0.1:8787;
    keepalive 10240;
}

# एक नया 8686 अपस्ट्रीम जोड़ें
upstream task {
   server 127.0.0.1:8686;
   keepalive 10240;
}

server {
  server_name webman.com;
  listen 80;
  access_log off;
  root /path/webman/public;

  # /tast से शुरू होने वाले अनुरोध 8686 पोर्ट पर जाएं, कृपया /tast को अपनी आवश्यकता के अनुसार परिवर्तित करें
  location /tast {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      proxy_pass http://task;
  }

  # अन्य अनुरोध मूल 8787 पोर्ट पर जाएं
  location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      if (!-f $request_filename){
          proxy_pass http://webman;
      }
  }
}

इस रूप में जब ग्राहक डोमेन.com/tast/xxx पर जाएगा तो 8686 पोर्ट का भागीदारी करेगा। 8787 पोर्ट पर अनुरोध प्रवाह को प्रभावित नहीं करेगा।