PHP की क्लाइंट लाइब्रेरी की मदद से, Google Ads API के साथ इंटरैक्ट करना आसान हो जाता है. इसके लिए, आपको बहुत कम कॉन्फ़िगरेशन करना पड़ता है. हालांकि, परफ़ॉर्मेंस इस बात पर निर्भर करती है कि लाइब्रेरी का इस्तेमाल और इंटिग्रेशन कैसे किया गया है.
आम तौर पर, सबसे सही तरीके सभी भाषाओं पर लागू होते हैं. इस गाइड में, PHP के लिए परफ़ॉर्मेंस ऑप्टिमाइज़ेशन के बारे में बताया गया है.
Protobuf और gRPC को लागू करना
Protobuf का इस्तेमाल gRPC और Google Ads API,
अनुरोध और जवाब के मैसेज के लिए करते हैं. इसे लागू करने के दो तरीके उपलब्ध हैं: प्योर PHP और C एक्सटेंशन. protobuf और grpc के लिए C एक्सटेंशन, क्रम से लगाने और नेटवर्क की परफ़ॉर्मेंस को बेहतर बनाते हैं.
ज़्यादा जानकारी के लिए, Protobuf की गाइड और ट्रांसपोर्ट की गाइड देखें.
PHP इंटरप्रेटर का ऑपरेशन मोड
PHP एक वर्सटाइल स्क्रिप्टिंग भाषा है. इसके कई ऑपरेशन मोड होते हैं, जो इसके इस्तेमाल पर निर्भर करते हैं. PHP-FPM (FastCGI Process Manager) या परसिस्टेंट ऐप्लिकेशन सर्वर, स्टैंडर्ड CGI से बेहतर होते हैं. ऐसा इसलिए, क्योंकि परसिस्टेंट वर्कर प्रोसेस, OPcache की मदद से कैश मेमोरी में सेव किए गए बाइटकोड और अनुरोधों के बीच संसाधनों का फिर से इस्तेमाल कर सकती हैं.
PHP का वर्शन
रनटाइम परफ़ॉर्मेंस में सुधार का फ़ायदा पाने के लिए, PHP के नए वर्शन पर नियमित रूप से अपग्रेड करें. PHP के उन वर्शन की सूची देखें जो काम करते हैं.
Google Ads API के ऐसे वर्शन जिनका इस्तेमाल नहीं किया जाता
क्लाइंट लाइब्रेरी के सभी वर्शन, Google Ads API के कई वर्शन के साथ काम करते हैं. क्लाइंट लाइब्रेरी, Google Ads API के जिस वर्शन के साथ काम करती है उसके लिए, खास पैकेज उपलब्ध होते हैं.
क्लाइंट लाइब्रेरी से, Google Ads API के उन वर्शन के लिए पैकेज हटाए जा सकते हैं जिनका इस्तेमाल आपके ऐप्लिकेशन में नहीं किया जाता. मेमोरी फ़ुटप्रिंट को कम करने और एक्ज़ीक्यूशन की स्पीड बढ़ाने के लिए, क्लाइंट लाइब्रेरी में प्रोग्राम के ज़रिए, एपीआई के ऐसे वर्शन हटाने की सुविधा होती है जिनका इस्तेमाल नहीं किया जाता.
उदाहरण
मान लें कि आपने एक ऐसा क्लाइंट ऐप्लिकेशन लागू किया है जो सिर्फ़ एपीआई के सबसे नए वर्शन (v26) का इस्तेमाल करता है. साथ ही, आपको एपीआई के उन वर्शन के लिए सहायता हटानी है जिनका इस्तेमाल नहीं किया जाता (v23, v24, और v25).
अपने प्रोजेक्ट की 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
# v23, v24, and
# v25 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- \
23 \
24 \
25
# 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
यहां दिए गए सैंपल एक्ज़ीक्यूशन आउटपुट में, फ़ाइल साइज़ में कमी दिखती है. इसमें V26 ही काम करने वाला एकमात्र वर्शन है:
# Supported Google Ads API versions:
V23
V24
V25
V26
# Vendor folder size:
135M ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 23 of Google Ads API...
Done
Removing support for the version 24 of Google Ads API...
Done
Removing support for the version 25 of Google Ads API...
Done
# Supported Google Ads API versions:
V26
# Vendor folder size:
60M ./vendor
डेवलपमेंट बनाम प्रोडक्शन
PHP एक इंटरप्रेटेड लैंग्वेज है जो निर्देशों को लागू करने से पहले कंपाइल करती है. डेवलपमेंट के दौरान, यह फ़ायदेमंद होती है. ऐसा इसलिए, क्योंकि सोर्स फ़ाइलें अक्सर बदलती हैं और एक्ज़ीक्यूशन टाइम कम होता है. प्रोडक्शन एनवायरमेंट में, स्थिरता और परफ़ॉर्मेंस सबसे अहम होती हैं.
कैश मेमोरी
कैशिंग करने का सुझाव दिया जाता है, क्योंकि इससे परफ़ॉर्मेंस बेहतर होती है और स्थिरता बढ़ती है. ऐसा इसलिए होता है, क्योंकि इसमें पहले से कंपाइल की गई स्क्रिप्ट के बाइटकोड को शेयर की गई मेमोरी में सेव किया जाता है.
OPcache, स्टैंडर्ड सॉल्यूशन है और यह डिफ़ॉल्ट रूप से PHP के साथ बंडल होता है.
अपने आप लोड होने की सुविधा
अपने-आप लोड होने की सुविधा से, परफ़ॉर्मेंस और स्थिरता बेहतर होती है. ऐसा इसलिए होता है, क्योंकि इसमें पहले से कंपाइल की गई क्लास मैप की जानकारी लोड की जाती है.
PHP की क्लाइंट लाइब्रेरी, अपने-आप लोड होने की सुविधा के लिए PSR-4 के मुताबिक काम करती है. साथ ही, यह अपनी composer.json फ़ाइल के हिस्से के तौर पर, इसकी परिभाषा देती है. इसके बाद, प्रोडक्शन
बिल्ड में, Dedicated
Composer CLI options के खास विकल्पों का इस्तेमाल किया जा सकता है. जैसे, --optimize-autoloader या
--classmap-authoritative.
लॉग इन हो रहा है
प्रोडक्शन में, लॉगर्स को ERROR या WARNING जैसे ज़्यादा थ्रेशोल्ड पर सेट करने से, I/O ओवरहेड और मेमोरी की खपत कम करने में मदद मिलती है.
ज़्यादा जानकारी के लिए, लॉगिंग की गाइड देखें.
डीबग करना और प्रोफ़ाइलिंग करना
प्रोडक्शन में, डीबगर और प्रोफ़ाइलर एक्सटेंशन (जैसे, Xdebug) बंद करें, क्योंकि इनसे एक्ज़ीक्यूशन ओवरहेड काफ़ी बढ़ जाता है.
प्रीलोड
PHP 7.4 से, OPcache प्रीलोडिंग का इस्तेमाल करके, सर्वर स्टार्टअप के दौरान स्क्रिप्ट को मेमोरी में पहले से लोड किया जा सकता है. यह स्टैंडर्ड OPcache कैशिंग से एक कदम आगे है.
प्रीलोड स्क्रिप्ट को खास तौर पर आपके ऐप्लिकेशन के लिए डिज़ाइन किया जाना चाहिए. PHP की क्लाइंट लाइब्रेरी, सामान्य प्रीलोड स्क्रिप्ट उपलब्ध नहीं कराती, क्योंकि मेमोरी के इस्तेमाल और परफ़ॉर्मेंस में होने वाले फ़ायदे के बीच का ट्रेड-ऑफ़, हर प्रोजेक्ट और डिप्लॉयमेंट एनवायरमेंट के हिसाब से अलग-अलग होता है.