FacebookAds\Exception\Exception: Failed to connect to graph.facebook.com port 443: Connection timed out
上記エラーは特にFacebookのAPIサーバーが落ちていなくても頻繁に発生する。
facebook/php-ads-sdkのデフォルトのタイムアウト設定は下記の通り。
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 60,
Api:init()を次のように書き換えることで、タイムアウト設定が延長できる。
Before
use FacebookAds\Api;
$api = Api::init($appId, $appSecret, $accessToken);
After
use FacebookAds\Api;
use FacebookAds\Http\Client;
use FacebookAds\Session;
$httpClient = new Client();
$options = $httpClient->getAdapter()->getOpts();
/** @var \ArrayObject $options */
$options[CURLOPT_CONNECTTIMEOUT] = 60; // 6倍にしてみた
$options[CURLOPT_TIMEOUT] = 360; // 6倍にしてみた
$api = new Api($httpClient, new Session($appId, $appSecret, $accessToken));
Api::setInstance($api);