fix
This commit is contained in:
@@ -30,38 +30,56 @@ public function handle()
|
||||
$failed = 0;
|
||||
|
||||
foreach ($users as $user) {
|
||||
try {
|
||||
$response = Http::withToken($token)
|
||||
->get('https://api.approagency.ir/api/admin/users', [
|
||||
'mobile' => $user->mobile,
|
||||
'per_page' => 1,
|
||||
]);
|
||||
|
||||
if ($response->successful()) {
|
||||
$data = $response->json('data.0');
|
||||
if ($data) {
|
||||
$user->update([
|
||||
'first_name' => $data['first_name'] ?? $user->first_name,
|
||||
'last_name' => $data['last_name'] ?? $user->last_name,
|
||||
'age' => $data['age'] ?? $user->age,
|
||||
'gender' => $data['gender'] ?? $user->gender,
|
||||
'birthday' => $data['birthday'] ?? $user->birthday,
|
||||
'identifier' => $data['uuid'] ?? $user->identifier,
|
||||
$retries = 0;
|
||||
while ($retries <= 3) {
|
||||
try {
|
||||
$response = Http::withToken($token)
|
||||
->retry(2, 2000)
|
||||
->get('https://api.approagency.ir/api/admin/users', [
|
||||
'mobile' => $user->mobile,
|
||||
'per_page' => 1,
|
||||
]);
|
||||
$name = $data['first_name'] ?? 'null';
|
||||
$this->line(" synced: {$user->mobile} → {$name}");
|
||||
$synced++;
|
||||
|
||||
if ($response->status() === 429) {
|
||||
$retries++;
|
||||
$wait = $retries * 3;
|
||||
$this->warn(" rate limited on {$user->mobile}, waiting {$wait}s...");
|
||||
sleep($wait);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($response->successful()) {
|
||||
$data = $response->json('data.0');
|
||||
if ($data) {
|
||||
$user->update([
|
||||
'first_name' => $data['first_name'] ?? $user->first_name,
|
||||
'last_name' => $data['last_name'] ?? $user->last_name,
|
||||
'age' => $data['age'] ?? $user->age,
|
||||
'gender' => $data['gender'] ?? $user->gender,
|
||||
'birthday' => $data['birthday'] ?? $user->birthday,
|
||||
'identifier' => $data['uuid'] ?? $user->identifier,
|
||||
]);
|
||||
$name = $data['first_name'] ?? 'null';
|
||||
$this->line(" synced: {$user->mobile} → {$name}");
|
||||
$synced++;
|
||||
}
|
||||
} else {
|
||||
$this->warn(" skip: {$user->mobile} (HTTP {$response->status()})");
|
||||
$failed++;
|
||||
}
|
||||
break;
|
||||
} catch (\Exception $e) {
|
||||
$retries++;
|
||||
if ($retries > 3) {
|
||||
$this->error(" failed: {$user->mobile} — {$e->getMessage()}");
|
||||
$failed++;
|
||||
} else {
|
||||
sleep($retries * 2);
|
||||
}
|
||||
} else {
|
||||
$this->warn(" skip: {$user->mobile} (HTTP {$response->status()})");
|
||||
$failed++;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$this->error(" failed: {$user->mobile} — {$e->getMessage()}");
|
||||
$failed++;
|
||||
}
|
||||
|
||||
usleep(200000); // 200ms delay to avoid rate limits
|
||||
sleep(3); // 3s between requests
|
||||
}
|
||||
|
||||
$this->info("Done. Synced: {$synced}, Failed: {$failed}");
|
||||
|
||||
Reference in New Issue
Block a user