| 
<?php
 /**
 * Sender and iSenderConsumer
 *
 * This interface your object oriented code with Curl and CurlParallel classes
 * Define a iSenderConsumer interface
 *
 * @package CurlParallel
 * @author Daniele Cruciani <[email protected]>
 * @version 0.5
 * @copyright Copyright (c) 2013, Daniele Cruciani
 * @license http://www.opensource.org/licenses/mit-license.php
 */
 
 require_once "curlparallel.class.php";
 require_once "curl.class.php";
 
 class Sender {
 /**
 * Curl Parallel object
 * @var CurlParallel
 */
 private $cm;
 
 function __construct() {
 $this->cm = new CurlParallel();
 //set_exception_handler(array('Sender', 'ExceptionHandler'));
 }
 
 /**
 * log execution
 * @param string $string
 * @param integer $type (0: notice, 1: warning, 2: error) or whatever you want
 */
 private function log($string,$type=0) {
 $datetime_string = strftime('c');
 // dump on screen (where? console maybe)
 print $datetime_string. " - " .$string . "\n";
 }
 
 /**
 *
 * @param string $url
 * @param iSenderConsumer $caller
 * @return Curl the curl object created for possibly set parameter before start sending
 */
 public function addRecipient($url, iSenderConsumer $caller) {
 
 $curlo = new Curl($url);
 $curlo->header = 1;
 
 $curlo->setCallbackFun(array($this,'executedCurl'));
 $curlo->setCallbackArgs(array($curlo,$caller));
 
 $this->cm->add($curlo);
 
 return $curlo;
 }
 
 public function execute() {
 $this->cm->RunAll();
 }
 
 /**
 * consume the response
 * @param Curl $curlo
 * @param SenderConsumer $caller
 */
 public function executedCurl(Curl $curlo, iSenderConsumer $caller) {
 $response = $curlo->fetchObj();
 $caller->consumeCurlResponse($response,$curlo);
 }
 
 public static function ExceptionHandler(Exception $e) {
 print $e->getTraceAsString();
 }
 }
 
 interface iSenderConsumer {
 /**
 * consume the response object elaborated by the sender
 * @param stdClass $object
 */
 public function consumeCurlResponse(HttpResponse $object,Curl $curlo = NULL);
 }
 
 |