ประสิทธิภาพ

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

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

การติดตั้งใช้งาน Protobuf และ gRPC

Protobuf ใช้โดย gRPC และ Google Ads API สำหรับ ข้อความคำขอและการตอบกลับ มีการติดตั้งใช้งาน 2 แบบ (PHP ล้วนและส่วนขยาย C) และส่วนขยาย C สำหรับทั้ง protobuf และ grpc ให้ประสิทธิภาพการซีเรียลไลซ์และเครือข่ายที่ดีขึ้นอย่างมาก

ดูข้อมูลเพิ่มเติมได้ที่คู่มือ 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 เวอร์ชันที่แอปพลิเคชันของคุณไม่ได้ใช้ ออกจากไลบรารีของไคลเอ็นต์ได้อย่างปลอดภัย ไลบรารีของไคลเอ็นต์มีเครื่องมือสำหรับ นำ API เวอร์ชันที่ไม่ได้ใช้ออกโดยอัตโนมัติเพื่อลดการใช้หน่วยความจำ และเพิ่มความเร็วในการดำเนินการ

ตัวอย่าง

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

การบันทึก

การตั้งค่าเครื่องบันทึกที่เกณฑ์สูงขึ้น เช่น ERROR หรือ WARNING ในการผลิต จะช่วยลดค่าใช้จ่าย I/O และการใช้หน่วยความจำ

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

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

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

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

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

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