Всем привет. Пытаюсь написать скрипт, который проверяет доступность телеграм логинов. Для этого есть метод account.checkUsername в апи телеграма. Мне за раз надо чекнуть 100+ логинов, в однопоточном режиме это занимает больше минуты. Решил переписать на async.
Написал такой код, он работает, если отключить режим асинхронности. Включаю режим - перестает работать. Если внутри foreach сделать var_dump то будет объект генератора.
$MadelineProto->async(true);
$me = $MadelineProto->get_self();
$MadelineProto->logger($me);
function handleUsers($usernames, $MadelineProto)
{
$i = 0;
$count = count($usernames);
while ($i < $count)
{
yield $usernames[$i]['field_value'] => $MadelineProto->account->checkUsername(['username' => $usernames[$i]['field_value']]);
$i++;
}
}
foreach (handleUsers($usernames, $MadelineProto) AS $login => $available)
{
if ($available)
{
// Available
}
else
{
// Not available
}
}