// когда все запросы завершатся
// если в одном из запросов ошибка
$results = Promise\unwrap($promises);
// когда все запросы завершатся , даже если были ошибки
$results = Promise\settle($promises)->wait();
// можно получить доступ к любому результату
// function.
echo $results['image']['value']->getHeader('Content-Length')[0]
echo $results['png']['value']->getHeader('Content-Length')[0]
rPman, я тоже с этим столкнулся. На стороне сервера с помощью sleep просто скрипт останавливается на какое то время. А как сделать, чтобы была задержка между запросами, можно ли сделать в Guzzle задержку ?
Здравствуйте, Юрий. Спасибо за комментарий. А setTimeout(ajaxFunction, 1000) можно ли использовать на сервере nginx ? Просто когда я отправляю запросы то через какое то время пишет что время ожидания сервера вышло. Можете привести примерный код, как вы используете функцию sleep
//В переменную $par я передаю идентификаторы пользователей, через цикл я отправляю ///синхронные запросы
в данном цикле я добавляю в друзья вконтакте по id
foreach ( $par as $user) {
$friends = new Friends();
$friends2 = $friends -> add($token, $user, null);//добавляем в друзья
// sleep(10);
задержка не работает в синхронном запросе
...}
Сама функция добавления:
public function add( $token, $user_id, $proxy=null)
{
use GuzzleHttp\Client;
use GuzzleHttp\Promise;
$client = new Client(['base_uri' => 'httpbin.org']);
$promises = [
'image' => $client->getAsync('/image'),
'png' => $client->getAsync('/image/png'),
'jpeg' => $client->getAsync('/image/jpeg'),
'webp' => $client->getAsync('/image/webp')
];
// когда все запросы завершатся
// если в одном из запросов ошибка
$results = Promise\unwrap($promises);
// когда все запросы завершатся , даже если были ошибки
$results = Promise\settle($promises)->wait();
// можно получить доступ к любому результату
// function.
echo $results['image']['value']->getHeader('Content-Length')[0]
echo $results['png']['value']->getHeader('Content-Length')[0]