GithubHelp home page GithubHelp logo

jxw123 / parallel-curl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dulao5/parallel-curl

0.0 2.0 0.0 109 KB

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

PHP 100.00%

parallel-curl's Introduction

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();

parallel-curl's People

Contributors

dulao5 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.