परफ़ॉर्मेंस मोड

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

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

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

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

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

PHP इंटरप्रेटर का ऑपरेशन मोड

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

PHP वर्शन

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

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

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

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

उदाहरण

मान लें कि आपको ऐसी क्लाइंट लाइब्रेरी लागू करनी है जो सिर्फ़ एपीआई के नए वर्शन: v24 का इस्तेमाल करती है. साथ ही, आपको एपीआई के इस्तेमाल न किए गए वर्शन: v23 और v22 के लिए सहायता बंद करनी है.

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

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

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

# 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 v22 and v23 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 22 23

# 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

नीचे दिए गए सैंपल के एक्ज़ीक्यूशन आउटपुट से पता चलता है कि फ़ाइल का साइज़ 50M कम हो गया है. साथ ही, अब सिर्फ़ V24 वर्शन काम करेगा:

# Supported Google Ads API versions:
V22
V23
V24
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 22 of Google Ads API...
Done
Removing support for the version 23 of Google Ads API...
Done
# Supported Google Ads API versions:
V24
# Vendor folder size:
60M     ./vendor

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

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

कैश मेमोरी

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

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

अपने आप लोड होने की सुविधा

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

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

लॉग इन हो रहा है

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

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

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

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

प्रीलोड

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

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