Login   Register  
PHP Classes
elePHPant
Icontem

File: demo4.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Grigori Kochanov  >  gCurl  >  demo4.php  >  Download  
File: demo4.php
Role: Example script
Content type: text/plain
Description: Response handlers for CURL-based crawlers
Class: gCurl
Perform HTTP requests using Curl
Author: By
Last change: Accessible without user login
Date: 6 years ago
Size: 2,484 bytes
 

Contents

Class file image Download
<?php
/**
 * CURL Handlers: Swiss-knife of CURL-based crawlers
 * You can define the handler function for the response body after processing response headers.
 * For example, the handler can be set according to the value of the Content-type header.
 */
//Include library
require_once('gCurl/gcurl.class.php');


/**
 * Define a handler class
 *
 */
class Handlers extends gCurlHandlers {
    public 
$charset;
    
/**
     * Process headers (check content type) before assigning the body handler
     *
     * @param array $headers
     */
    
function headersHandler(array $headers){
        
//use 'ctype' as the content type value
        // because $headers['content-type'] usually contains charset as well
        
if (stripos($headers['ctype'],'text') === false){
            
//it's not a text, don't process it
            
$this->bodyHandlerName='';
        }
        
$this->charset $headers['charset'];
    }
    
    
/**
     * The cookies handler method is called after headers handler and before assigning the response body handler.
     * 
     * The method is called only if the server response contains Set-cookie header(s).
     * It  receives an array of the parsed cookies.
     *
     * @param array $cookies
     */
    
function cookiesHandler(array $cookies){
        
var_export($cookies);
    }
    
    
/**
     * The function MUST return the exact number of bytes it received in the $data_chunk parameter.
     * The chunks have unpredictable length between 1 and 8192 bytes (inclusive),
     * as received from the remote server.
     * The handler is called sequentially for each chunk of a response body.
     *
     * @param resource $ch
     * @param string $data_chunk
     */
    
function bodyHandler($ch,$data_chunk){
        
$length strlen($data_chunk);
        
        echo 
strtoupper$data_chunk);
        
        
//The body handler should return the nuber of bytes it received
        
return $length;
    }
}

//init variables
$url 'google.com.ua';

try{
    
    
//initialize the class
    
$curl = new gCurl($url);
    
//initialize the handlers
    
$handlers = new Handlers();
    
//assign handlers
    
$curl->setHandlers($handlers);
    
    
// Response object returned does not have body data if a body handler is defined
    
$response $curl->exec();
    
//$response->body == '';
    
}catch (gksException $E){
    echo 
$E->getHtmlMessage();
    exit;
}