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

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

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

Protobuf और gRPC लागू करने के तरीके

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

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

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

PHP एक वर्सटाइल स्क्रिप्टिंग लैंग्वेज है. इसके इस्तेमाल के हिसाब से, इसमें कई ऑपरेशन मोड होते हैं. PHP-FPM (FastCGI Process Manager) या परसिस्टेंट ऐप्लिकेशन सर्वर, स्टैंडर्ड CGI से बेहतर होते हैं. इसकी वजह यह है कि परसिस्टेंट वर्कर प्रोसेस, ओपकैश के ज़रिए कैश किए गए बाइटकोड और संसाधनों को अलग-अलग अनुरोधों के लिए फिर से इस्तेमाल कर सकती हैं.

PHP वर्शन

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

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

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

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

उदाहरण

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

अपने प्रोजेक्ट की 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 unused Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* \
  -maxdepth 0 | grep -oE 'V[0-9]+$'
echo "# Vendor folder size:"
du -sh ./vendor

# Use the Composer script to remove the unused versions
# v22, v23, and
# v24 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- \
  22 \
  23 \
  24

# Output the vendor folder size and the list of Google Ads API versions that are
# supported after removing support for unused Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* \
  -maxdepth 0 | grep -oE 'V[0-9]+$'
echo "# Vendor folder size:"
du -sh ./vendor

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

# Supported Google Ads API versions:
V22
V23
V24
V25
# Vendor folder size:
135M    ./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
Removing support for the version 24 of Google Ads API...
Done
# Supported Google Ads API versions:
V25
# Vendor folder size:
60M     ./vendor

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

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

कैश मेमोरी

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

OPcache, एक स्टैंडर्ड समाधान है. यह PHP के साथ डिफ़ॉल्ट रूप से बंडल होता है.

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

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

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

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

प्रोडक्शन में लॉगर को ERROR या WARNING जैसे ज़्यादा थ्रेशोल्ड पर सेट करने से, I/O ओवरहेड और मेमोरी की खपत को कम करने में मदद मिलती है.

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

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

प्रोडक्शन में डीबगर और प्रोफ़ाइलर एक्सटेंशन (जैसे, Xdebug) बंद करें, क्योंकि इनसे एक्ज़ीक्यूशन ओवरहेड काफ़ी बढ़ जाता है.

प्रीलोड

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

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