परफ़ॉर्मेंस

PHP क्लाइंट लाइब्रेरी आपकी ओर से कम से कम कॉन्फ़िगरेशन के साथ Google Ads API के साथ इंटरैक्शन को आसान बनाती है. हालांकि, इसकी परफ़ॉर्मेंस इस बात पर निर्भर करती है कि लाइब्रेरी का इस्तेमाल और उसे कैसे इंटिग्रेट किया गया है.

ज़्यादातर ये सबसे सही तरीके सभी भाषाओं पर लागू होते हैं. यह गाइड, खास तौर पर PHP से जुड़ी समस्याओं को हल करती है.

प्रोटोबफ़ लागू करना

अनुरोध और जवाब के मैसेज के लिए, gRPC और Google Ads API प्रोटोबफ़ का इस्तेमाल करते हैं. इसे लागू करने के दो तरीके उपलब्ध हैं. हालांकि, सी में लिखे गए विकल्प की परफ़ॉर्मेंस बेहतर है.

ज़्यादा जानकारी के लिए, प्रोटोबफ़ गाइड देखें.

PHP अनुवादक का ऑपरेशन मोड

PHP एक बहुमुखी स्क्रिप्टिंग भाषा है और उपयोग के आधार पर इसमें कई ऑपरेशन मोड हैं. PHP CGI (कॉमन गेटवे इंटरफ़ेस) का एक खास फ़ायदा है, क्योंकि यह एक्ज़ीक्यूशन के बीच संसाधनों को शेयर कर सकता है.

PHP वर्शन

नियमित रूप से नए PHP वर्शन पर अपग्रेड करना अच्छा होता है, क्योंकि आम तौर पर यह बेहतर प्रदर्शन के साथ मिलता है. इस्तेमाल किए जा सकने वाले PHP वर्शन की सूची.

Google Ads API के इस्तेमाल नहीं किए गए वर्शन

क्लाइंट लाइब्रेरी के सभी वर्शन में, Google Ads API के कई वर्शन काम करते हैं. क्लाइंट लाइब्रेरी के साथ काम करने वाले Google Ads API के हर वर्शन के लिए, खास तौर पर उस वर्शन के लिए पैकेज दिए गए हैं.

Google Ads API के इस्तेमाल न किए जाने वाले वर्शन के लिए बनाए गए पैकेज को क्लाइंट लाइब्रेरी से सुरक्षित तरीके से हटाया जा सकता है. ऐप्लिकेशन को तेज़ी से चलाने या मेमोरी फ़ुटप्रिंट कम करने से मदद मिल सकती है. इसलिए, क्लाइंट लाइब्रेरी इसे प्रोग्राम के हिसाब से, काम करने की सुविधाएं देती है.

उदाहरण

मान लें कि आपने एक ऐसी क्लाइंट लाइब्रेरी लागू की है जिसमें एपीआई के सिर्फ़ नए वर्शन: v16 का इस्तेमाल किया गया है और आपको एपीआई के इस्तेमाल नहीं किए गए वर्शन के लिए सहायता हटानी है: v15 और v14.

प्रोजेक्ट की composer.json फ़ाइल में, एक कंपोज़र स्क्रिप्ट (नाम remove-google-ads-api-version-support) तय करें, जो क्लास ApiVersionSupport में क्लाइंट लाइब्रेरी से दी गई सुविधा का इस्तेमाल करती है:

"scripts": {
  "remove-google-ads-api-version-support": [
    "Google\\Ads\\GoogleAds\\Util\\ApiVersionSupport::remove"
  ]
}

इसके बाद, वर्शन नंबर के साथ पैरामीटर के तौर पर कंपोज़र स्क्रिप्ट का इस्तेमाल करें और कुछ स्थिति मैसेज प्रिंट करें:

# Change the current directory to the project directory.
cd /path/to/the/project

# Install the project.
composer install

# Output the vendor folder size and the list of Google Ads API versions that are
# supported before removing support for Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* -maxdepth 0 | grep -o '..$'
echo "# Vendor folder size:"
du -sh ./vendor

# Use the Composer script to remove the unused versions v14 and v15 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 14 15

# Output the vendor folder size and the list of Google Ads API versions that are
# supported after removing support for Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* -maxdepth 0 | grep -o '..$'
echo "# Vendor folder size:"
du -sh ./vendor

नीचे दिए गए सैंपल का इस्तेमाल करके, फ़ाइल के साइज़ को 5 करोड़ तक कम कर दिया गया है. हालांकि, V16 ही बचा हुआ वर्शन काम करता है:

# Supported Google Ads API versions:
V14
V15
V16
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 14 of Google Ads API...
Done
Removing support for the version 15 of Google Ads API...
Done
# Supported Google Ads API versions:
V16
# Vendor folder size:
60M     ./vendor

डेवलपमेंट बनाम प्रोडक्शन

PHP एक अनुवादित भाषा है, जिसमें यह निर्देशों को निष्पादित करने से पहले उन्हें इकट्ठा करता है. आम तौर पर इसका फ़ायदा इसलिए होता है, क्योंकि डेवलपमेंट के दौरान सोर्स अक्सर बदल जाते हैं, जबकि इसके लागू होने का समय इतना ज़रूरी नहीं होता. हालांकि, प्रोडक्शन के समय इसका उलटा होता है, क्योंकि स्थिरता और परफ़ॉर्मेंस, सबसे बड़ी समस्याएं होती हैं.

कैशे

कैश मेमोरी में सेव करना आम बात है. इसे इस्तेमाल करने का सुझाव इसलिए दिया जाता है, क्योंकि इससे ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर होती है. साथ ही, पहले से कंपाइल किए गए स्क्रिप्ट निर्देशों को सेव करके स्थिरता बढ़ाई जा सकती है.

OPcache सबसे ज़्यादा इस्तेमाल किया जाने वाला समाधान है और यह डिफ़ॉल्ट रूप से उपलब्ध होता है.

ऑटोलोड

Autoload आम बात है. ऐसा इसलिए है, क्योंकि यह परफ़ॉर्मेंस को बेहतर बनाता है और क्लास के बारे में पहले से इकट्ठा की गई जानकारी लोड करके स्थिरता को बढ़ाता है.

PHP क्लाइंट लाइब्रेरी, ऑटोलोडिंग के लिए PSR-4 के मुताबिक होती है और composer.json फ़ाइल के हिस्से के तौर पर परिभाषा देती है. उदाहरण के लिए, कंपोज़र के लिए खास तौर पर दिए गए विकल्प, जैसे कि --optimize-autoloader या --classmap-authoritative, को शानदार तरीके से इस्तेमाल किया जा सकता है.

लॉगिंग

लॉगर को ERROR जैसे हाई लेवल पर सेट करने से, एक्ज़ीक्यूशन में लगने वाले समय और मेमोरी के इस्तेमाल को कम किया जा सकता है.

ज़्यादा जानकारी के लिए, लॉग करने की गाइड देखें.

डीबग करना और प्रोफ़ाइल बनाना

हम डीबगर और प्रोफ़ाइलर टूल को बंद करने का सुझाव देते हैं, क्योंकि आम तौर पर इन टूल को इस्तेमाल करने में कुछ समय लगता है.

प्रीलोड

PHP 7.4 के बाद से, OPcache प्रीलोडिंग का इस्तेमाल मेमोरी में स्क्रिप्ट को पहले से लोड करने के लिए किया जा सकता है, जो सामान्य कैशिंग से एक कदम आगे बढ़कर होता है.

इस सुविधा का फ़ायदा लेने के लिए स्क्रिप्ट को डिज़ाइन किया जाना चाहिए, लेकिन PHP क्लाइंट लाइब्रेरी में ऐसा नहीं होता, क्योंकि OPcache प्रीलोड लागू करने का कोई सामान्य तरीका लागू नहीं होता. साथ ही, मेमोरी के इस्तेमाल और परफ़ॉर्मेंस हासिल करने के बीच तालमेल बिठाना किसी प्रोजेक्ट और उसके काम करने के तरीके पर बेहद खास होता है.