ประสิทธิภาพ

ไลบรารีของไคลเอ็นต์ PHP ช่วยให้การโต้ตอบกับ Google Ads API ง่ายขึ้นโดยที่คุณกำหนดค่าเองน้อยที่สุด อย่างไรก็ตาม ประสิทธิภาพขึ้นอยู่กับวิธีใช้งานและผสานรวมไลบรารี

แนวทางปฏิบัติแนะนำเหล่านี้ส่วนใหญ่ใช้ได้กับ ทุกภาษา คู่มือนี้จะกล่าวถึงหลักเกณฑ์เฉพาะสำหรับ PHP

การใช้งาน Protobuf

gRPC และ Google Ads API จะใช้ Protobuf สำหรับข้อความคำขอและข้อความตอบกลับ โดยมี 2 การติดตั้งใช้งาน ดังนี้

ดูข้อมูลเพิ่มเติมได้ในคู่มือโปรโตคอล

โหมดการทำงานของล่าม PHP

PHP เป็นภาษาสคริปต์อเนกประสงค์และมีโหมดการดำเนินการหลายแบบตามการใช้งาน PHP CGI (Common Gateway Interface) มีข้อได้เปรียบที่โดดเด่นเพราะสามารถใช้ทรัพยากรร่วมกันระหว่างการดำเนินการได้

เวอร์ชัน PHP

ควรอัปเกรดเป็นเวอร์ชัน PHP ใหม่อยู่เสมอ เนื่องจากมักจะมีประสิทธิภาพโดยรวมดีขึ้น รายการเวอร์ชัน PHP ที่รองรับ

เวอร์ชัน Google Ads API ที่ไม่ได้ใช้

ไลบรารีของไคลเอ็นต์ทุกเวอร์ชันรองรับ Google Ads API หลายเวอร์ชัน สำหรับ Google Ads API แต่ละเวอร์ชันที่ไลบรารีของไคลเอ็นต์รองรับจะมีแพ็กเกจเฉพาะสำหรับเวอร์ชันนั้นๆ

คุณสามารถนำแพ็กเกจที่มีไว้สำหรับ Google Ads API เวอร์ชันที่ไม่ได้ใช้งานออกจากไลบรารีของไคลเอ็นต์ได้อย่างปลอดภัย เนื่องจากไลบรารีของไคลเอ็นต์สามารถช่วยเพิ่มความเร็วในการดำเนินการหรือลดร่องรอยของหน่วยความจำ ไลบรารีของไคลเอ็นต์จะให้โปรแกรมยูทิลิตีในการดำเนินการดังกล่าวโดยใช้โปรแกรม

ตัวอย่าง

สมมติว่าคุณใช้ไลบรารีของไคลเอ็นต์ที่ใช้เฉพาะ API เวอร์ชันล่าสุด: v17 และต้องการยกเลิกการรองรับ API เวอร์ชันที่ไม่ได้ใช้ v16 และ v15

ในไฟล์ 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 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

ตัวอย่างเอาต์พุตของการดำเนินการด้านล่างระบุว่าไฟล์ลดขนาดลง 50 MB และเวอร์ชันที่รองรับที่เหลือคือ 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 ได้ทันที

Logging

การตั้งค่าตัวบันทึกเป็นระดับสูง เช่น ERROR จะช่วยลดโอเวอร์เฮดค่าใช้จ่ายในการดำเนินการและการใช้หน่วยความจำได้

ดูข้อมูลเพิ่มเติมในคู่มือการบันทึก

การแก้ไขข้อบกพร่องและการทำโปรไฟล์

เราขอแนะนำให้ปิดใช้เครื่องมือแก้ไขข้อบกพร่องและเครื่องมือสร้างโปรไฟล์ เนื่องจากเครื่องมือเหล่านี้มักจะมาพร้อมกับเวลาในการดำเนินการบางส่วน

โหลดล่วงหน้า

ตั้งแต่ PHP 7.4 คุณสามารถใช้การโหลดล่วงหน้า OPcache เพื่อโหลดสคริปต์ในหน่วยความจำล่วงหน้า ซึ่งก้าวไปไกลกว่าการแคชแบบปกติหนึ่งขั้น

ต้องมีการออกแบบสคริปต์เพื่อใช้ประโยชน์จากฟีเจอร์นี้ แต่ไลบรารีของไคลเอ็นต์ PHP ยังไม่มีการใช้งานเนื่องจากไม่มีวิธีทั่วไปในการใช้ OPcache โหลดล่วงหน้า และการตัดกันระหว่างการใช้งานหน่วยความจำกับประสิทธิภาพที่ได้รับนั้นมีความเฉพาะเจาะจงสูงกับโปรเจ็กต์และการดำเนินการนั้นๆ