ประสิทธิภาพ

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

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

การใช้งาน Protobuf

gRPC และ Google Ads API ใช้ Protobuf สําหรับข้อความคําขอและการตอบกลับ การใช้งานมี 2 แบบ แต่เวอร์ชันที่เขียนด้วย C จะมีประสิทธิภาพดีกว่า

ดูข้อมูลเพิ่มเติมได้ที่คู่มือ Protobuf

โหมดการทํางานของโปรแกรมล่าม PHP

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

เวอร์ชัน PHP

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

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

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

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

ตัวอย่าง

สมมติว่าคุณกำลังใช้ไลบรารีไคลเอ็นต์ที่ใช้เฉพาะ API เวอร์ชันล่าสุด v18 และต้องการนําการรองรับ API เวอร์ชันที่ไม่ได้ใช้ออก นั่นคือ 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 จากนั้นคุณจะใช้ตัวเลือกเฉพาะของ Composer ได้ทันที เช่น --optimize-autoloader หรือ --classmap-authoritative

การบันทึก

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

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

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

เราขอแนะนำให้ปิดใช้เครื่องมือแก้ไขข้อบกพร่องและเครื่องมือตรวจสอบประสิทธิภาพ เนื่องจากมักจะมีเวลาในการดำเนินการที่เพิ่มขึ้น

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

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

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