1. Go to this page and download the library: Download gekkone/rolling-curl library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
gekkone / rolling-curl example snippets
$rollingCurl = new \RollingCurl\RollingCurl();
$rollingCurl
->get('http://yahoo.com')
->get('http://google.com')
->get('http://hotmail.com')
->get('http://msn.com')
->get('http://reddit.com')
->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $rollingCurl) {
// parsing html with regex is evil (http://bit.ly/3x9sQX), but this is just a demo
if (preg_match("#<title>(.*)</title>#i", $request->getResponseText(), $out)) {
$title = $out[1];
}
else {
$title = '[No Title Tag Found]';
}
echo "Fetch complete for (" . $request->getUrl() . ") $title " . PHP_EOL;
})
->setSimultaneousLimit(3)
->execute();
$rollingCurl = new \RollingCurl\RollingCurl();
for ($i = 0; $i <= 500; $i+=10) {
// https://www.google.com/search?q=curl&start=10
$rollingCurl->get('https://www.google.com/search?q=curl&start=' . $i);
}
$results = array();
$start = microtime(true);
echo "Fetching..." . PHP_EOL;
$rollingCurl
->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $rollingCurl) use (&$results) {
if (preg_match_all('#<h3 class="r"><a href="([^"]+)">(.*)</a></h3>#iU', $request->getResponseText(), $out)) {
foreach ($out[1] as $idx => $url) {
parse_str(parse_url($url, PHP_URL_QUERY), $params);
$results[$params['q']] = strip_tags($out[2][$idx]);
}
}
// Clear list of completed requests and prune pending request queue to avoid memory growth
$rollingCurl->clearCompleted();
$rollingCurl->prunePendingRequestQueue();
echo "Fetch complete for (" . $request->getUrl() . ")" . PHP_EOL;
})
->setSimultaneousLimit(10)
->execute();
;
echo "...done in " . (microtime(true) - $start) . PHP_EOL;
echo "All results: " . PHP_EOL;
print_r($results);
$rollingCurl = new \RollingCurl\RollingCurl();
$rollingCurl
// setOptions will overwrite all the default options.
// addOptions is probably a better choice
->setOptions(array(
CURLOPT_HEADER => true,
CURLOPT_NOBODY => true
))
->get('http://yahoo.com')
->get('http://google.com')
->get('http://hotmail.com')
->get('http://msn.com')
->get('http://reddit.com')
->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $rollingCurl) {
echo "Fetch complete for (" . $request->getUrl() . ")" . PHP_EOL;
})
->setSimultaneousLimit(3)
->execute();