Я использую Facebook Ads SDK и пытаюсь добавить пользователей в пользовательский список аудитории. Поскольку существует предел 10000 данных одновременно , для будущего использования я пытаюсь добавить данные в al oop.
Однако, когда он попадает во второй раз, он выдает ошибку.
1.
public function test($audienceId, $data)
Api::init($appId, $appSecret, $token);
$audience = new CustomAudience($audienceId);
$schema = [
CustomAudienceMultikeySchemaFields::EMAIL,
CustomAudienceMultikeySchemaFields::PHONE,
//...
];
foreach (array_chunk($data, 500) as $chunk) {
$audience->addUsersMultiKey($chunk, $schema, true);
}
}
// And run as
$class = new FbTestClass();
$class->test($audienceId, $data);
Если addUsersMultiKey()
выполняется 1 раз, он работает отлично, однако, если он запускается 2 раза, он выдает ошибку
FacebookAds \ Http \ Exception \ AuthorizationException - произошла неизвестная ошибка.
2 Затем я попытался переместить App:init()
деталь в __construct()
, но проблема не устранена.
public function __construct() {
Api::init($appId, $appSecret, $token);
}
public function test($audienceId) {
$audience = new CustomAudience($audienceId);
$schema = [
CustomAudienceMultikeySchemaFields::EMAIL, //...
];
$audience->addUsersMultiKey($chunk, $schema, true);
}
// And run as:
$class = new FbTestClass();
foreach (array_chunk($data, 500) as $chunk) {
$class->test($audienceId, $chunk);
}
3. Я попытался выполнить цикл за пределами функции test()
и сохранить App::init()
внутри функции test()
, поэтому App::init()
вызывается несколько раз. Все та же проблема.
В этом ответе говорится, что нужно выполнять запросы индивидуально, но как это можно сделать? Но разве я не пробовал все возможные сценарии ios?
Ошибка, похоже, связана с пакетными запросами. Для нас было принято решение изменить код для выполнения запросов по отдельности.
Я полагаю, что речь идет о времени выполнения, потому что когда я обновляю sh, все работает нормально; так что я не думаю, что это проблема удушения (я также пытался sleep(10)
, на самом деле это работает на refre sh).
Как я могу преодолеть эту проблему?
Может быть, есть способ уничтожить App
экземпляр? Или есть способ создать новый App
экземпляр для перезаписи предыдущего?
Я видел пакетный запрос в документах Facebook , но не смог понять как использовать его в моем сценарии использования (пользовательская аудитория & addUsersMultiKey ()).
Трассировка стека:
An unknown error has occurred. {"userId":1,"exception":"[object] (FacebookAds\\Http\\Exception\\AuthorizationException(code: 1): An unknown error has occurred. at /home/vagrant/Code/myApp/vendor/facebook/php-ads-sdk/src/FacebookAds/Http/Exception/RequestException.php:165)
[stacktrace]
#0 /home/vagrant/Code/myApp/vendor/facebook/php-ads-sdk/src/FacebookAds/Http/Client.php(215): FacebookAds\\Http\\Exception\\RequestException::create()
#1 /home/vagrant/Code/myApp/vendor/facebook/php-ads-sdk/src/FacebookAds/Http/Request.php(286): FacebookAds\\Http\\Client->sendRequest()
#2 /home/vagrant/Code/myApp/vendor/facebook/php-ads-sdk/src/FacebookAds/Api.php(165): FacebookAds\\Http\\Request->execute()
#3 /home/vagrant/Code/myApp/vendor/facebook/php-ads-sdk/src/FacebookAds/Api.php(214): FacebookAds\\Api->executeRequest()
#4 /home/vagrant/Code/myApp/vendor/facebook/php-ads-sdk/src/FacebookAds/Object/CustomAudience.php(537): FacebookAds\\Api->call()
#5 is where I execute the code:
$audience->addUsersMultiKey($chunk, $schema, true);
Обновление: 4 Я также попробовал то же самое с graph-sdk
$fb = new Facebook([
'app_id' => env("FB_APP_ID"),
'app_secret' => env("FB_APP_SECRET"),
'default_graph_version' => 'v6.0',
'default_access_token' => env("FB_ACCESS_TOKEN")
]);
foreach ($chunks as $chunk) {
$payload = [
'schema' => $schema,
'data' => $chunk->toArray()
];
$requests[] = $fb->request("POST", "/$customAudienceId/users", ['payload' => $payload]);
}
$batchResponse = $fb->sendBatchRequest($requests);
Здесь массив ответов имеет оба запроса. 1-й успешен, второй - тот же вопрос.
$batchResponse contains:
responses: array:2 [▼
0 => Facebook\FacebookResponse ▼
body => // successful data returned...
1 => Facebook\FacebookResponse ▼
body => "{"error":{"message":"An unknown error has occurred.","type":"OAuthException","code":1,"fbtrace_id":"A5...464cGc22gi28Kb"}}"