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

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

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

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

Protobuf का इस्तेमाल gRPC करता है के साथ-साथ, Google Ads API का भी इस्तेमाल किया जा सकता है. लागू करने के दो तरीके हैं: उपलब्ध है, लेकिन C में लिखे गए शब्द का प्रदर्शन बेहतर है.

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

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

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

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 फ़ाइल के हिस्से के तौर पर डेफ़िनिशन उपलब्ध कराती है. Composer के लिए खास तौर पर बने विकल्प, जैसे उदाहरण के लिए, --optimize-autoloader या --classmap-authoritative पहले भी उनका इस्तेमाल किया जा सकता है.

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

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

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

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

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

प्रीलोड

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

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