Login   Register  
PHP Classes
elePHPant
Icontem

File: v1/tests/Thread.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of jstar88  >  Safe IO  >  v1/tests/Thread.php  >  Download  
File: v1/tests/Thread.php
Role: Unit test script
Content type: text/plain
Description: Unit test script
Class: Safe IO
Access files using locks to prevent corruption
Author: By
Last change:
Date: 1 year ago
Size: 3,262 bytes
 

Contents

Class file image Download
<?php

/**************************************************************************************

class Thread   

version: 1.0    

by:Alex Lau

email:alex621@gmail.com

If you have any questions, feel free to ask me.



In this class, there are six properties

    var $func;  //The function name that you want to call

    var $arg;    //The arguments you want to pass in

    var $thisFileName; //This file's name

    var $fp;    //File pointer

    var $host;    //Host

    var $port;    //Port

And there are four methods,

    void Thread(string $host, [int $port = 80]) // constructor

    void setFunc(string $func,array $arg) 

        $func is a string of the function name

        $arg is an array of the arguments

            Usage:

                $arg = array ( 2, 3);

                $func = "test";

                The method will call test(2,3).

    void start()                  To start the thread

    mixed getreturn()              To get the return value from the function that called by setFunc

    void setPort()                  To set the port

    void setHost()                  To set the host



Since serialize() does not support the resource type, this class cannot be used to pass in or return the resource type.

**************************************************************************************/



class Thread{

    var 
$func;

    var 
$arg;

    var 
$thisFileName;

    var 
$fp;

    var 
$host;

    var 
$port;

    function 
Thread($host,$port=""){

        
$this->host $host;

        if (
$port != ""){

            
$this->port $port;

        }else{

            
$this->port 80;

        }

        
$this->thisFileName $_SERVER["SCRIPT_NAME"];

    }

    function 
setFunc($func,$arg=false){

        
$i=0;

        
$this->arg "";

        if (
$arg){

            foreach (
$arg as $argument){

                
$this->arg .= "&a[]=".urlencode(serialize($argument));

            }

        }

        
$this->func $func;

    }

    function 
setPort($port){

        
$this->port $port;

    }

    function 
setHost($host){

        
$this->host $host;

    }

    function 
start(){

        
$this->fp fsockopen($this->host,$this->port);

        
$header "GET ".$this->thisFileName."?threadrun=1&f=".urlencode($this->func).$this->arg." HTTP/1.1\r\n";

        
$header .= "Host: ".$this->host."\r\n";

        
$header .= "Connection: Close\r\n\r\n";

        
fputs($this->fp,$header);

    }

    function 
getreturn(){

        
$flag=false;
        
$output ="";

        while (!
feof($this->fp)) {

            
$buffer fgets($this->fp4096);

            if (
$flag){

                
$output .= $buffer;

            }

            if (
trim($buffer) == ""){

                
$flag true;

            }

        }

        return 
unserialize(trim($output));

    }

}

if (isset(
$_GET['threadrun'])){

    
$arg = array();

    if (isset(
$_GET['a'])){

        foreach(
$_GET['a'] as $argument){
            if (
get_magic_quotes_gpc() == 1)

                
$arg[] = unserialize(stripslashes($argument));
            else
                
$arg[] = unserialize($argument);

        }

    }
    
$return call_user_func_array($_GET["f"], $arg);

    echo 
serialize($return);

    exit;

}



?>