परफ़ॉर्मेंस

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

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

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

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

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

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

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

PHP वर्शन

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

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

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

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

उदाहरण

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

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

# 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 करोड़ की कमी की गई है और काम करने वाला फ़िलहाल V17 ही वर्शन है:

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

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

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

कैशे

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

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

ऑटोलोड

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

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

लॉगिंग

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

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

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

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

प्रीलोड

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

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