2012-08-26 11 views
6

मैं एक ग्राहक जो एक सर्वर से एक JSON प्रतिक्रिया मिलती है। मैं गणना करने के लिए कितने अनुरोध/प्रतिक्रियाओं एक वेब होस्टिंग कंपनी (प्रति माह उदा 100GB) से मेरी आवंटित स्थानांतरण भत्ता की खपत होगी चाहते हैं।क्लाइंट और सर्वर के बीच उपयोग की जाने वाली नेटवर्क बैंडविड्थ को कैसे मापें?

मैं कैसे को मापने/इस गणना कैसे करते हैं?

मुझे लगता है मैं सिर्फ इसलिए msgs एक सुसंगत लंबाई और स्वरूप के हैं एक बार को मापने के लिए की जरूरत है।

मैं क्लाइंट/सर्वर/नेटवर्क पर नियंत्रण है। सभी को कार्य के लिए विशिष्ट रूप से समर्पित किया जा सकता है। क्लाइंट एक आईओएस ऐप है और सर्वर एक PHP रीस्ट वेब सेवा (विंडोज़ पर) है। मेरे लैन दोनों पर।

मैं इस बारे में कुछ नहीं पता है और अब तक सिर्फ JSON strlen() का उपयोग करने का आकार मिल गया है। क्या वह सही दिशा में भी जा रहा है?

+1

Firebug नेट टैब आप पैकेट आकार दे सकते हैं। –

+0

इन उत्तरों को पढ़ना मुझे एहसास हुआ कि मैं अपने प्रश्न में स्पष्ट नहीं था। इसमें कोई HTML शामिल नहीं है। मेरे पास एक PHP उद्देश्यपूर्ण वेब सेवा पूछताछ आईओएस डिवाइस पर एक (उद्देश्य-सी) ऐप है। मैं सवाल अपडेट करूंगा। लेकिन मुझे लगता है कि मैं इसके लिए जवाब अनुकूलित कर सकता हूं। मैं अब कोशिश करूँगा। – Polly

+0

उस जानकारी को पाने के लिए चार्ल्स प्रॉक्सी का उपयोग करें – Till

उत्तर

2

मैं Charles Proxy का उपयोग कर की सिफारिश करेंगे। HTTP के माध्यम से आदान-प्रदान की जाने वाली सभी प्रकार की जानकारी डीबग करने के लिए यह एक अमूल्य उपकरण है। आप इसे अपने आईफोन/आईपॉड/आईपैड के साथ-साथ सिम्युलेटर से सभी HTTP/s संचार का पता लगाने के लिए भी उपयोग कर सकते हैं।

यह दुर्भाग्य से उन के रूप में सबसे Android उपकरणों के साथ बहुत अच्छी तरह से काम नहीं करता वास्तव में एक सिस्टम-वाइड HTTP प्रॉक्सी को विन्यस्त समर्थन नहीं करते। उन मामलों और गैर-HTTP-आधारित संचार के लिए, मैं WireShark का उपयोग करने की अनुशंसा करता हूं।

कुछ दुर्लभ मामलों में, जो कारण अभी भी अस्पष्ट हैं, चार्ल्स शायद ही कभी HTTP- आधारित कनेक्शन के लिए आईओएस डिवाइस पर विफल रहता है - एक सामान्य मामला GoogleAnalytics होगा। उन लोगों के लिए, मैं फिर वायरशर्क की सिफारिश करूंगा।

2

JSON स्ट्रिंग की लंबाई आप स्थानांतरित कर नेटवर्क पैकेट में पेलोड क्षेत्र का केवल आकार देता है। यह डेटा फ़ील्ड HTTP पैकेट के भीतर encapsulated किया जा सकता है और HTTP पैकेट ट्रांसमिशन से पहले आईपी पैकेट में रखा जाना चाहिए। इनमें से प्रत्येक पैकेट में हेडर फ़ील्ड होते हैं जो कुल संचरण की लंबाई में योगदान देते हैं।

तो, एक सटीक अनुमान के लिए आप पहली बार प्रतिक्रिया पैकेट की वास्तविक लंबाई Wireshark या एक बराबर उपकरण का उपयोग करके खोजना चाहिए। इस आपके आवेदन के लिए केवल अनुरोध प्रकार है, तो आप अनुरोधों की अधिकतम संख्या प्राप्त करने के लिए सीमा तक पहुंचने के लिए अपने सर्वर आवेदन की प्रतिक्रिया आकार करने के लिए अपने बैंडविड्थ विभाजित कर सकते हैं। बहरहाल, यह आमतौर पर ऐसा नहीं करता है, तो आप एक वेब अनुप्रयोग है जो कई वेब पृष्ठों है कि ग्राहकों से सुलभ हैं है, किसी भी उपयोग (ब्राउज़िंग) के बाद से है ग्राहक के लिए सर्वर से डेटा अंतरण के कारण होगा है।

1

आपका अपाचे लॉग प्रत्येक अनुरोध की बाइट की संख्या है, लेकिन यह सोचते हैं आप एक पूरी तरह से PHP समाधान चाहते हैं, तो आपकी स्क्रिप्ट की शुरुआत से जोड़ें:

<?php 
    function log_input() { 
     # get raw post data 
     $length = strlen(file_get_contents('php://input')); 

     if (function_exists('apache_request_headers')) { 
      # quick, but not accurate 
      $length += strlen(serialize(apache_request_headers())); 
     } else { 
      # add fudge for HTTP/1.1 etc 
      $length += strlen($_SERVER['QUERY_STRING']) + 14; 
      foreach ($_SERVER as $k => $v) { 
       if (preg_match('/^HTTP/i', $k)) { 
        $length += strlen($k) + strlen($v); 
       } 
      } 
     } 

     $s = sprintf("%s\t%s\n", date('c'), $length); 
     file_put_contents('/tmp/input.log', $s, FILE_APPEND); 
    }   

    function log_output() { 
     $s = sprintf("%s\t%s\n", date('c'), ob_get_length()); 
     file_put_contents('/tmp/output.log', $s, FILE_APPEND); 
    } 

    log_input(); 
    register_shutdown_function('log_output'); 
    ob_start(); 

?> 
<html> .... 
संबंधित मुद्दे

 संबंधित मुद्दे