{"id":17035383,"url":"https://github.com/hhxsv5/php-multi-curl","last_synced_at":"2025-04-12T12:32:19.461Z","repository":{"id":56984222,"uuid":"86285942","full_name":"hhxsv5/php-multi-curl","owner":"hhxsv5","description":"A simple and efficient library wrapping curl_multi_* is used to handle parallel http requests.","archived":false,"fork":false,"pushed_at":"2019-04-10T06:15:55.000Z","size":1489,"stargazers_count":22,"open_issues_count":0,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-10T17:05:09.744Z","etag":null,"topics":["curl","multi-curl","multi-http-request","parallel-request"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hhxsv5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-27T03:11:32.000Z","updated_at":"2024-08-23T05:14:57.000Z","dependencies_parsed_at":"2022-08-21T09:10:27.111Z","dependency_job_id":null,"html_url":"https://github.com/hhxsv5/php-multi-curl","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhxsv5%2Fphp-multi-curl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhxsv5%2Fphp-multi-curl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhxsv5%2Fphp-multi-curl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhxsv5%2Fphp-multi-curl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hhxsv5","download_url":"https://codeload.github.com/hhxsv5/php-multi-curl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248566598,"owners_count":21125693,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["curl","multi-curl","multi-http-request","parallel-request"],"created_at":"2024-10-14T08:46:41.365Z","updated_at":"2025-04-12T12:32:18.634Z","avatar_url":"https://github.com/hhxsv5.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"Multiple cURL in PHP\n======\n\nA simple and efficient library wrapping curl_multi_* is used to handle parallel http requests.\n\n## Requirements\n\n* PHP 5.4 or later\n* PHP cURL extension\n\n## Installation via Composer([packagist](https://packagist.org/packages/hhxsv5/php-multi-curl))\n\n```bash\ncomposer require \"hhxsv5/php-multi-curl:~1.0\" -vvv\n```\n\n## Usage\n\n```php\n//require '../vendor/autoload.php';\nuse Hhxsv5\\PhpMultiCurl\\Curl;\nuse Hhxsv5\\PhpMultiCurl\\MultiCurl;\n\n$getUrl = 'http://www.weather.com.cn/data/cityinfo/101270101.html';\n$postUrl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=yourtoken';\n\n//Single http request\n$options = [//The custom options of cURL\n    CURLOPT_TIMEOUT        =\u003e 10,\n    CURLOPT_CONNECTTIMEOUT =\u003e 5,\n    CURLOPT_USERAGENT      =\u003e 'Multi-cURL client v1.5.0',\n];\n\n$c = new Curl(null, $options);\n$c-\u003emakeGet($getUrl);\n$response = $c-\u003eexec();\nif ($response-\u003ehasError()) {\n    //Fail\n    var_dump($response-\u003egetError());\n} else {\n    //Success\n    var_dump($response-\u003egetBody());\n}\n\n//Reuse $c\n$c-\u003emakePost($postUrl);\n$response = $c-\u003eexec();\nif ($response-\u003ehasError()) {\n    //Fail\n    var_dump($response-\u003egetError());\n} else {\n    //Success\n    var_dump($response-\u003egetBody());\n}\n```\n \n```php\n//require '../vendor/autoload.php';\nuse Hhxsv5\\PhpMultiCurl\\Curl;\nuse Hhxsv5\\PhpMultiCurl\\MultiCurl;\n\n$getUrl = 'http://www.weather.com.cn/data/cityinfo/101270101.html';\n$postUrl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=yourtoken';\n\n//Multi http request\n$c2 = new Curl();\n$c2-\u003emakeGet($getUrl);\n\n$c3 = new Curl();\n$c3-\u003emakePost($postUrl);\n\n$mc = new MultiCurl();\n\n$mc-\u003eaddCurls([$c2, $c3]);\n$allSuccess = $mc-\u003eexec();\nif ($allSuccess) {\n    //All success\n    var_dump($c2-\u003egetResponse()-\u003egetBody(), $c3-\u003egetResponse()-\u003egetBody());\n} else {\n    //Some curls failed\n    var_dump($c2-\u003egetResponse()-\u003egetError(), $c3-\u003egetResponse()-\u003egetError());\n}\n\necho PHP_EOL;\n\n//Reuse $mc\n$mc-\u003ereset();\n\n$c4 = new Curl();\n$c4-\u003emakeGet($getUrl);\n\n$c5 = new Curl();\n$c5-\u003emakePost($postUrl);\n\n$mc-\u003eaddCurls([$c4, $c5]);\n$allSuccess = $mc-\u003eexec();\nif ($allSuccess) {\n    //All success\n    var_dump($c4-\u003egetResponse()-\u003egetBody(), $c5-\u003egetResponse()-\u003egetBody());\n} else {\n    //Some curls failed\n    var_dump($c4-\u003egetResponse()-\u003egetError(), $c5-\u003egetResponse()-\u003egetError());\n}\n```\n\n```php\n//require '../vendor/autoload.php';\nuse Hhxsv5\\PhpMultiCurl\\Curl;\n\n//Upload file\n$postUrl = 'http://localhost/upload.php';//\u003c?php var_dump($_FILES);\n$options = [//The custom options of cURL\n    CURLOPT_TIMEOUT        =\u003e 10,\n    CURLOPT_CONNECTTIMEOUT =\u003e 5,\n    CURLOPT_USERAGENT      =\u003e 'Multi-cURL client v1.5.0',\n];\n$c = new Curl(null, $options);\n$file1 = new CURLFile('./olddriver.gif', 'image/gif', 'name1');\n$params = ['file1' =\u003e $file1];\n$c-\u003emakePost($postUrl, $params);\n$response = $c-\u003eexec();\nif ($response-\u003ehasError()) {\n    //Fail\n    var_dump($response-\u003egetError());\n} else {\n    //Success\n    var_dump($response-\u003egetBody());\n}\n```\n\n```php\n//require '../vendor/autoload.php';\nuse Hhxsv5\\PhpMultiCurl\\Curl;\n\n$fileUrl = 'https://avatars2.githubusercontent.com/u/7278743?s=460\u0026v=4';//\u003c?php var_dump($_FILES);\n$options = [//The custom options of cURL\n    CURLOPT_TIMEOUT        =\u003e 3600,//1 hour\n    CURLOPT_CONNECTTIMEOUT =\u003e 10,\n    CURLOPT_USERAGENT      =\u003e 'Multi-cURL client v1.5.0',\n];\n$c = new Curl(null, $options);\n$c-\u003emakeGet($fileUrl);\n$response = $c-\u003eexec();\nif ($response-\u003ehasError()) {\n    //Fail\n    var_dump($response-\u003egetError());\n} else {\n    //Success\n    $targetFile = './a/b/c/test.png';\n    var_dump($c-\u003eresponseToFile($targetFile));\n}\n```\n\n## License\n\n[MIT](https://github.com/hhxsv5/php-multi-curl/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhhxsv5%2Fphp-multi-curl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhhxsv5%2Fphp-multi-curl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhhxsv5%2Fphp-multi-curl/lists"}