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

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

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

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

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

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

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

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

PHP वर्शन

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

Google Ads API के ऐसे वर्शन जो इस्तेमाल नहीं हुए हैं

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

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

उदाहरण

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

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

# 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 एमबी कम हो गया है और काम करने वाला सिर्फ़ V18 वर्शन ही बचा है:

# Supported Google Ads API versions:
V16
V17
V18
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 16 of Google Ads API...
Done
Removing support for the version 17 of Google Ads API...
Done
# Supported Google Ads API versions:
V18
# Vendor folder size:
60M     ./vendor

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

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

कैश

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

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

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

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

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

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

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

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

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

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

प्रीलोड

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

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