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

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 के ऐसे वर्शन के लिए बने पैकेज जिन्हें इस्तेमाल नहीं किया जाता है उन्हें क्लाइंट लाइब्रेरी से सुरक्षित तरीके से हटाया जा सकता है. प्रोग्राम के तेज़ी से काम करने या मेमोरी फ़ुटप्रिंट को कम करने के लिए, क्लाइंट लाइब्रेरी में प्रोग्राम के हिसाब से काम करने की सुविधाएं उपलब्ध होती हैं.

उदाहरण

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

प्रोजेक्ट की composer.json फ़ाइल में, एक Composer स्क्रिप्ट (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 को पहले से लोड करने का कोई सामान्य तरीका नहीं है. साथ ही, किसी प्रोजेक्ट और उसे लागू करने के तरीके के हिसाब से, मेमोरी के इस्तेमाल और परफ़ॉर्मेंस में बढ़ोतरी के बीच का फ़ायदा अलग-अलग होता है.