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

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

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

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

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

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

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

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

PHP वर्शन

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

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

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

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

उदाहरण

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

प्रोजेक्ट की 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 v21 and v22 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 21 22

# 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

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

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

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

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

कैश मेमोरी

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

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

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

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

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

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

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

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

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

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

प्रीलोड

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

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