บริการ Google Ads API ทั้งหมดมีการตั้งค่าเริ่มต้น รวมถึงการหมดเวลา ซึ่งการรับส่งใช้ บริการใดก็ตามของ Google Ads API เวอร์ชันที่กำหนดจะมี ไฟล์ JSON เฉพาะที่มีการตั้งค่าเริ่มต้นเหล่านี้ซึ่งกำหนดไว้ที่ระดับบริการและ เมธอด เช่น คุณจะดูไฟล์การกำหนดค่าทรัพยากรบริการสำหรับ Google Ads API เวอร์ชันล่าสุดได้ใน GitHub
การตั้งค่าเริ่มต้นเพียงพอสําหรับกรณีการใช้งานส่วนใหญ่ แต่ก็อาจมีบางครั้งที่คุณต้องลบล้างการตั้งค่าเหล่านั้น ไลบรารีของไคลเอ็นต์สำหรับ PHP รองรับการลบล้าง
การตั้งค่าการหมดเวลาต่อการเรียก (ระบุเป็นมิลลิวินาทีโดยใช้timeoutMillis
ตัวเลือก) สำหรับทั้งการสตรีมฝั่งเซิร์ฟเวอร์และการเรียกแบบเอกภาค
แม้ว่าคุณจะกำหนดค่าระยะหมดเวลาสูง (เช่น 2 ชั่วโมงขึ้นไป) ในไลบรารีของไคลเอ็นต์ได้ แต่พร็อกซีเครือข่ายพื้นฐานหรือเซิร์ฟเวอร์ API อาจยังคงสิ้นสุดคำขอที่ใช้เวลานานก่อนเวลาและแสดงDEADLINE_EXCEEDEDข้อผิดพลาดเกี่ยวกับสถานะ
ลบล้างระยะหมดเวลาสำหรับการเรียกสตรีมมิงของเซิร์ฟเวอร์
เมธอดบริการ Google Ads API เพียงเมธอดเดียวที่ใช้การเรียกสตรีมมิงเซิร์ฟเวอร์คือ
GoogleAdsService.SearchStream หากต้องการลบล้างระยะหมดเวลาเริ่มต้น
ให้ส่ง timeoutMillis (เป็นมิลลิวินาที) ในอาร์เรย์ตัวเลือกการเรียกที่ไม่บังคับ
เมื่อเรียกใช้เมธอด
private static function makeServerStreamingCall( GoogleAdsClient $googleAdsClient, int $customerId ) { $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); // Creates a query that retrieves all campaign IDs. $query = 'SELECT campaign.id FROM campaign'; $output = ''; try { // Issues a search stream request by setting a custom client timeout. /** * @var GoogleAdsServerStreamDecorator $stream */ $stream = $googleAdsServiceClient->searchStream( SearchGoogleAdsStreamRequest::build($customerId, $query), [ // Any server streaming call has a default timeout setting. For this // particular call, the default setting can be found in the following file: // https://github.com/googleads/google-ads-php/blob/master/src/Google/Ads/GoogleAds/V25/Services/resources/google_ads_service_client_config.json. // // When making a server streaming call, an optional argument is provided and can // be used to override the default timeout setting with a given value. 'timeoutMillis' => self::CLIENT_TIMEOUT_MILLIS ] ); // Iterates over all rows in all messages and collects the campaign IDs. foreach ($stream->iterateAllElements() as $googleAdsRow) { /** * @var GoogleAdsRow $googleAdsRow */ $output .= ' ' . $googleAdsRow->getCampaign()->getId(); } print 'The server streaming call completed before the timeout.' . PHP_EOL; } catch (ApiException $exception) { if ($exception->getStatus() === ApiStatus::DEADLINE_EXCEEDED) { print 'The server streaming call did not complete before the timeout.' . PHP_EOL; } else { // Bubbles up if the exception is not about timeout. throw $exception; } } finally { print 'All campaign IDs retrieved:' . ($output ?: ' None') . PHP_EOL; } }
ลบล้างการหมดเวลาสำหรับการเรียกแบบเอกภาค
เมธอดบริการของ Google Ads API ส่วนใหญ่ใช้การเรียกแบบเอกภาค ตัวอย่างทั่วไปคือ
GoogleAdsService.Search และ
GoogleAdsService.Mutate หากต้องการลบล้างระยะหมดเวลาเริ่มต้น ให้ส่ง
timeoutMillis (เป็นมิลลิวินาที) ในอาร์เรย์ตัวเลือกการเรียกที่ไม่บังคับเมื่อ
เรียกใช้เมธอด
private static function makeUnaryCall(GoogleAdsClient $googleAdsClient, int $customerId) { $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); // Creates a query that retrieves all campaign IDs. $query = 'SELECT campaign.id FROM campaign'; $output = ''; try { // Issues a search request by setting a custom client timeout. $response = $googleAdsServiceClient->search( SearchGoogleAdsRequest::build($customerId, $query), [ // Any unary call is retryable and has default retry settings. // Complete information about these settings can be found here: // https://googleapis.github.io/gax-php/master/Google/ApiCore/RetrySettings.html. // For this particular call, the default retry settings can be found in the // following file: // https://github.com/googleads/google-ads-php/blob/master/src/Google/Ads/GoogleAds/V25/Services/resources/google_ads_service_client_config.json. // // When making an unary call, an optional argument is provided and can be // used to override the default retry settings with given values. 'retrySettings' => [ // Sets the maximum accumulative timeout of the call, it includes all tries. 'totalTimeoutMillis' => self::CLIENT_TIMEOUT_MILLIS, // Sets the timeout that is used for the first try to one tenth of the // maximum accumulative timeout of the call. // Note: This overrides the default value and can lead to // RequestError.RPC_DEADLINE_TOO_SHORT errors when too small. We recommend // to do it only if necessary. 'initialRpcTimeoutMillis' => self::CLIENT_TIMEOUT_MILLIS / 10, // Sets the maximum timeout that can be used for any given try to one fifth // of the maximum accumulative timeout of the call (two times greater than // the timeout that is used for the first try). 'maxRpcTimeoutMillis' => self::CLIENT_TIMEOUT_MILLIS / 5 ] ] ); // Iterates over all rows in all messages and collects the campaign IDs. foreach ($response->iterateAllElements() as $googleAdsRow) { /** * @var GoogleAdsRow $googleAdsRow */ $output .= ' ' . $googleAdsRow->getCampaign()->getId(); } print 'The unary call completed before the timeout.' . PHP_EOL; } catch (ApiException $exception) { if ($exception->getStatus() === ApiStatus::DEADLINE_EXCEEDED) { print 'The unary call did not complete before the timeout.' . PHP_EOL; } else { // Bubbles up if the exception is not about timeout. throw $exception; } } finally { print 'All campaign IDs retrieved:' . ($output ?: ' None') . PHP_EOL; } }