status में send_fail का कारण

现象:

status आदेश चलाते समय, send_fail की स्थिति दिखाई देती है, इसका क्या कारण है?

答:

send_fail होना आमतौर पर कोई बड़ी समस्या नहीं है, यह सामान्यतः क्लाइंट द्वारा कनेक्शन को सक्रिय रूप से बंद करने या क्लाइंट द्वारा डेटा प्राप्त करने में असमर्थ होने के कारण डेटा भेजने में विफलता होती है।

send_fail के दो कारण हैं

  1. जब send इंटरफ़ेस का उपयोग करके क्लाइंट को डेटा भेजने का प्रयास किया जाता है और यह पाया जाता है कि क्लाइंट पहले ही断开 हो चुका है, तब send_fail की गिनती 1 से बढ़ जाती है। चूंकि क्लाइंट ने主动断开 किया है, यह एक सामान्य घटना है, जिसे आमतौर पर नजरअंदाज किया जा सकता है।

  2. सर्वर द्वारा डेटा भेजने की गति क्लाइंट द्वारा डेटा प्राप्त करने की गति से अधिक होती है, जिसके परिणामस्वरूप डेटा लगातार सर्वर के缓冲区 में संचित होता है (workerman हर क्लाइंट के लिए एक भेजने का缓冲区 बनाता है), यदि缓冲区 का आकार सीमा से अधिक हो जाता है (TcpConnection::$maxSendBufferSize डिफ़ॉल्ट रूप से 1M) तो डेटा को हटा दिया जाएगा, onError घटना को सक्रिय किया जाएगा (यदि हो) और send_fail की गिनती 1 से बढ़ जाएगी।

उदाहरण स्वरूप, यदि ब्राउज़र को न्यूनतम किया जाता है तो js को चलने से रोका जा सकता है, जिससे ब्राउज़र द्वारा सर्वर डेटा प्राप्त करने में रुकावट आती है, डेटा लंबे समय तक缓冲区 में संचित होता है, और सीमा से अधिक होने पर प्रत्येक send कॉल send_fail की गिनती 1 से बढ़ाने का कारण बनता है।

总结:

क्लाइंट के断开 कनेक्शन के कारण होने वाले send_fail के बारे में आमतौर पर चिंता करने की जरूरत नहीं है।

यदि send_fail क्लाइंट द्वारा डेटा प्राप्त करने में रुकावट के कारण होता है, तो आपको जांचना चाहिए कि क्लाइंट सामान्य है या नहीं।

यदि क्लाइंट द्वारा डेटा प्राप्त करने की गति 持续 सर्वर द्वारा भेजे जाने की गति से कम है, तो आपको व्यावसायिक प्रक्रिया को अनुकूलित करने या क्लाइंट के प्रदर्शन को सुधारने पर विचार करना चाहिए। यदि बैंडविड्थ के कारण भेजने में रुकावट हो रही है, तो सर्वर की बैंडविड्थ बढ़ाने पर विचार किया जा सकता है।