Skip to content
This repository has been archived by the owner on Apr 16, 2023. It is now read-only.
/ parallel-curl Public archive

A high performance parallel http client . The PHP library using multi curl

Notifications You must be signed in to change notification settings

dulao5/parallel-curl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Parallel Curl

A high performance parallel http client . The PHP library using multi curl .

The Features:

  • parcall http call
  • has a easly task iterator
  • live connection
  • other curl features

Classes

  • CurlMFetcher : curl multiple fetcher
  • CurlPool : a curl cache pool
  • CurlTaskList : a curl task iterator
  • CurlTaskAbstract : a abstract class , your task class should extends it

Usage

php test/test.php test/urls.txt cat test/test.php

//autoload
function __autoload($classname) {
	static $lib_path ;
	if(!$lib_path) { 
		$lib_path = dirname(__FILE__)."/../inc/";
	}
	include("$lib_path/$classname.php");
}

//define your task implement 
class MyCurlTask extends CurlTaskAbstract {
	protected function onFinished() {
		$info = curl_getinfo($this->_curl);
		$contents = curl_multi_getcontent($this->_curl);
		//do something
		fprintf(STDERR, "%s\ttask\t%s\tfinished\n", date("Y-m-d H:i:s.u"), $this->_url);
		//todo
		//you can implement a http content parser , or save to file , or other
	}
}

//load task list

$tasklist = new CurlTaskList();
$opts = array(
		CURLOPT_VERBOSE => 0 ,
		CURLOPT_CONNECTTIMEOUT => 1,
		CURLOPT_RETURNTRANSFER => true,
		CURLOPT_ENCODING => 'gzip,deflate',
		);

foreach(array_filter(array_map('trim', file($argv[1]))) as $url) {
		$tasklist->push(new MyCurlTask($url, $opts));
}

//using curl multi featcher and run
$tunnels = 4;
$curlm = new CurlMFetcher($tasklist, $tunnels);
$curlm->setDebug(true);

//run
$curlm->run();

About

A high performance parallel http client . The PHP library using multi curl

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages