Доброго времени суток!
Разрабатываю на Yii2 небольшое приложение для поиска юзеров в сообществах с использование VK API. Выборка занимает большое кол-во времени, поэтому изначально показываю пользователю результаты выборки одного сообщетсва и запускаю в фоне скрипт с помощью асинхронного GET запроса.
Но в итоге получаю пустой результат.
Метод, отвечающий за формирование асинхронного запроса:
private function curlRequestAsync($url, $params, $type = 'POST')
{
if (is_array($params)) {
foreach ($params as $key => &$val) {
if (is_array($val)) $val = implode(',', $val);
$post_params[] = $key.'='.urlencode($val);
}
$post_string = implode('&', $post_params);
} else {
$post_string = $params;
}
$parts = parse_url($url);
$fp = fsockopen($parts['host'],
isset($parts['port'])?$parts['port']:80,
$errno, $errstr, 30);
// Data goes in the path for a GET request
if('GET' == $type) {
$parts['path'] .= (!empty($post_string)) ? '?' . $post_string . '&user_id=' . Yii::$app->user->identity->id : '';
}
$out = "$type ".$parts['path']." HTTP/1.1\r\n";
$out.= "Host: ".$parts['host']."\r\n";
$out.= "Content-Type: application/x-www-form-urlencoded\r\n";
$out.= "Content-Length: ".((!empty($post_string)) ? strlen($post_string) : '1000')."\r\n";
$out.= "Connection: Close\r\n\r\n";
// Data goes in the request body for a POST request
if ('POST' == $type && isset($post_string)) {
$out.= $post_string;
}
fwrite($fp, $out);
var_dump($out);
fclose($fp);
}
Вызов метода:
$this->curlRequestAsync(Url::toRoute(['get-all-members'], true), http_build_query(Yii::$app->request->get()), 'GET');
Часть экшна, в котором происходит фоновый процесс выборки остальных результатов (а именно списка сообщества):
public function actionGetAllMembers() {
set_time_limit(0);
ignore_user_abort(true);
$model = new SearchForm();
$groups = $model->getUserSubscriptionsNew();
...
}
Ну и часть самого метода модели для осуществления выборки, используя метод VK API:
public function getUserSubscriptionsNew() {
$vk = \Yii::$app->authClientCollection->getClient('vkontakte');
$groups = $vk->post('users.getSubscriptions', ['extended' => 1, 'fields' => 'members_count'])['response'];
return $groups;
}
Каким образом можно справиться с данной проблемой?
Заранее благодарен всем за помощь!