1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hhxsv5-php-multi-curl

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Multiple cURL в PHP

Для параллельной обработки HTTP-запросов используется простая и эффективная библиотека, которая оборачивает curl_multi_.

Требования:

  • PHP 5.4 или более поздней версии;
  • расширение PHP cURL.

Установка через Composer:

composer require "hhxsv5/php-multi-curl:~1.0" -vvv

Использование:

//require '../vendor/autoload.php';
use Hhxsv5\PhpMultiCurl\Curl;
use Hhxsv5\PhpMultiCurl\MultiCurl;

$getUrl = 'http://www.weather.com.cn/data/cityinfo/101270101.html';
$postUrl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=yourtoken';

//Одиночный HTTP-запрос
$options = [//Пользовательские параметры cURL
    CURLOPT_TIMEOUT        => 10,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_USERAGENT      => 'Multi-cURL client v1.5.0',
];

$c = new Curl(null, $options);
$c->makeGet($getUrl);
$response = $c->exec();
if ($response->hasError()) {
    //Ошибка
    var_dump($response->getError());
} else {
    //Успех
    var_dump($response->getBody());
}

//Повторное использование $c
$c->makePost($postUrl);
$response = $c->exec();
if ($response->hasError()) {
    //Ошибка
    var_dump($response->getError());
} else {
    //Успех
    var_dump($response->getBody());
}
//require '../vendor/autoload.php';
use Hhxsv5\PhpMultiCurl\Curl;
use Hhxsv5\PhpMultiCurl\MultiCurl;

$getUrl = 'http://www.weather.com.cn/data/cityinfo/101270101.html';
$postUrl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=yourtoken';

//Множественные HTTP-запросы
$c2 = new Curl();
$c2->makeGet($getUrl);

$c3 = new Curl();
$c3->makePost($postUrl);

$mc = new MultiCurl();

$mc->addCurls([$c2, $c3]);
$allSuccess = $mc->exec();
if ($allSuccess) {
    //Все запросы успешны
    var_dump($c2->getResponse()->getBody(), $c3->getResponse()->getBody());
} else {
    //Некоторые запросы завершились неудачно
    var_dump($c2->getResponse()->getError(), $c3->getResponse()->getError());
}

echo PHP_EOL;

//Повторное использование $mc
$mc->reset();

$c4 = new Curl();
$c4->makeGet($getUrl);

$c5 = new Curl();
$c5->makePost($postUrl);

$mc->addCurls([$c4, $c5]);
$allSuccess = $mc->exec();
if ($allSuccess) {
    //Все запросы успешны
    var_dump($c4->getResponse()->getBody(), $c5->getResponse()->getBody());
} else {
    //Некоторые запросы завершились неудачно
    var_dump($c4->getResponse()->getError(), $c5->getResponse()->getError());
}
//require '../vendor/autoload.php';
use Hhxsv5\PhpMultiCurl\Curl;

//Загрузка файла
$postUrl = 'http://localhost/upload.php';//<?php var_dump($_FILES);
$options = [//Пользовательские параметры cURL
    CURLOPT_TIMEOUT        => 10,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_USERAGENT      => 'Multi-cURL клиент v1.5.0',
];
$c = new Curl(null, $options);
$file1 = new CURLFile('./olddriver.gif', 'image/gif', 'name1');
$params = ['file1' => $file1];
$c->makePost($postUrl, $params);
$response = $c->exec();
if ($response->hasError()) {
    //Ошибка
    var_dump($response->getError());
} else {
    //Успех
    var_dump($response->getBody());
}
//require '../vendor/autoload.php';
use Hhxsv5\PhpMultiCurl\Curl;

$fileUrl = 'https://avatars2.githubusercontent.com/u/7278743?s=460&v=4';//<?php var_dump($_FILES);
$options = [//Пользовательские параметры cURL
    CURLOPT_TIMEOUT        => 3600,//1 час
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_USERAGENT      => 'Multi-cURL клиент v1.5.0',
];
$c = new Curl(null, $options);
$c->makeGet($fileUrl);
$response = $c->exec();
if ($response->hasError()) {
    //Ошибка
    var_dump($response->getError());
} else {
    //Успех
    $targetFile = './a/b/c/test.png';
    var_dump($c->responseToFile($targetFile));
}

Лицензия: MIT.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Php-multi-curl — это простая и эффективная библиотека, которая инкапсулирует curl_multi_*, и используется для обработки параллельных HTTP-запросов. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/hhxsv5-php-multi-curl.git
git@api.gitlife.ru:oschina-mirror/hhxsv5-php-multi-curl.git
oschina-mirror
hhxsv5-php-multi-curl
hhxsv5-php-multi-curl
master