Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Запрос циклом - правильно ли это?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
hayntsev
Отправлено: 27 Марта, 2016 - 12:43:56
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Март 2016  


Помог: 0 раз(а)




Доброго времени суток. Подскажите, пожалуйста, новичку.

Пытаюсь сделать авторизацию на сайте через ВКонтакте. Проблема в том, что почему-то file_get_contents срабатывает не всегда (50/50 - либо сработает, либо нет). Ничего лучше пока не придумал, чем сделать такую конструкцию:
PHP:
скопировать код в буфер обмена
  1. while ($token['access_token']==NULL)
  2. {$token = json_decode(file_get_contents($url), true);}


Вопросов, собственно, два:
1. Как мне задать время таймаута этого запроса? (Сервер не мой и php.ini поправить не могу, а ждать по 30 секунд каждый раз - долго. Если запрос обработается с 4 раза - полторы минуты ожидания для конечного пользователя )неприемлемо долго). 1 секунда на запрос - было бы замечательно.)
2. Какие подводные камни могут встретиться при таком подходе к делу?

(Отредактировано автором: 27 Марта, 2016 - 12:52:54)

 
 Top
T1grOK
Отправлено: 27 Марта, 2016 - 14:00:30
Post Id



Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июнь 2013  


Помог: 7 раз(а)




Хм....у VK же API имеется. Oauth авторизация и делай, что хочешь(в пределах возможностей API). Ограничение 3 запроса в секунду, но у VK есть свой JS-подобный язык, позволяющий сделать до 25 вызовов за одно обращение.


-----
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
 
 Top
hayntsev
Отправлено: 27 Марта, 2016 - 16:37:02
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Март 2016  


Помог: 0 раз(а)




T1grOK пишет:
Хм....у VK же API имеется. Oauth авторизация и делай, что хочешь(в пределах возможностей API). Ограничение 3 запроса в секунду, но у VK есть свой JS-подобный язык, позволяющий сделать до 25 вызовов за одно обращение.


Беда в том, что чтобы добраться до API нужно пройти авторизацию по OAuth. А с этим иногда проблемы бывают, при запросах со сторонних серверов. У меня например, почему-то токен не всегда получается забрать через file_get_contents (через раз примерно). Причём для теста делал предварительное открытие странички в отдельной вкладке - там json нормально себе существует. А парсинг этой странички через раз уходит на таймаут. Не могу понять в чём дело: то ли сервер моего хостера тупит, то ли сервер ВК. Иногда токен получаю только после 5-6 попыток спарсить - и каждый раз по 30 секунд ждать приходится. Огорчение
Пробовал через cURL получать - ещё хуже становится: если не получил json, то браузер по 500 вываливается.
Вот и думаю, каким костылём эту проблему порешать.


(Добавление)

Победил самостоятельно. Код ниже.
PHP:
скопировать код в буфер обмена
  1. while (empty($token['access_token'])
  2.     {$token = json_decode(file_get_contents($url), true);
  3. sleep(1)}


Программа отправляет запрос, затем "спит" одну секунду, проверяет получение ответа, если ответ получен, то выходит из цикла, иначе повторяет цикл. При этом таймаута запроса не ждёт - всё в порядке. Пользуйтесь, кому надо...

Вопрос закрыт.

(Отредактировано автором: 27 Марта, 2016 - 17:56:52)

 
 Top
Няшик
Отправлено: 11 Апреля, 2016 - 07:37:02
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Февр. 2016  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. define('_BR_', '<hr/>');
  3. if(SendAuthVk::auth('Логин', "Пароль")) {
  4.     print_r(SendAuthVk::User('access_token') . _BR_); // Получаем тока аксес токен
  5.     print_r(SendAuthVk::User());
  6. }  
  7.  



Спойлер (Отобразить)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB