PHP threads

PHP Threads class supports thread based tasks. The run() method of the Thread will be executed when invoked. Multi-thread sometimes is useful, e.g. when you download a lot of files, and some urls may be slow. The following code can download urls using multi-threads.

<?PHP
error_reporting(E_ALL);
class dn extends Thread
{
    public $res    = '';
    public $name   = '';
    public $runing = false;
	public $wfile;

    public function __construct($name) {
        $this->res    = 'Running Fisrt Time ...\n';
        $this->param    = 0;
        $this->runing = true;
		$this->wfile = "";
    }

    public function run() {
        while ($this->runing) {
            if ($this->param != "")
			{
				downloadurl($this->param,$this->wfile);
                $this->param   = '';
            }
			else {
				sleep(1);
            }
        }
    }
}

function downloadpages()
{
	$webpath="http://www.endmemo.com/program/php/";
	$pages = array("arraydiff","arraykeys","asort","ksort",
	        "array","cookie","arraypush","copy","substr");
	$wdir = "c:/test/";
	$sticks[] = new dn('a');
	$sticks[] = new dn('b');
	$sticks[] = new dn('c');
	$sticks[] = new dn('d');
	$sticks[] = new dn('e');

	foreach ($sticks as $w) {
		$w->start();
		$w->param="w";
	}

	$num = count($pages);
	for ($ii=0; $ii<$num;$ii++)
	{
 		$wfile = $wdir . $pages[$ii] . ".htm";
		$url = webpath . $pages[$ii] . ".php";
		
		while (true)
		{
			foreach ($sticks as $worker)
			{
				if ($worker->param=='')
				{
					$worker->param = $url;
					$worker->wfile = $wfile;
					break 2;
				}
			}
		}
	}
}

function downloadurl($url, $wfile)
{
	$res = file_get_contents($url);
	if (strlen($res)>10)
	{
		$newf = fopen ($wfile, "wb");
		if ($newf) fwrite($newf,$res);
		fclose($newf);
	}	
}

downloadpages();
?>



:: PHP Tutorials Home ::
PHP String Functions
 • concatenation • echo
 • ereg • ereg_replace
 • explode • htmlspecialchars
 • preg_match • preg_replace
 • preg_split • print,sprintf
 • regular expr. • str_replace
 • strcmp • strpos
 • strrev • strrpos
 • strtr • substr
 • substr_replace
PHP Array Functions
 • array_diff • array_flip
 • array_intersect • array_key_exists
 • array_keys • array_merge
 • array_pop • array_push
 • array_rand • array_search
 • array_splice • array_unshift
 • array_values • asort & arsort
 • count • in_array
 • ksort, krsort • shuffle
 • sort
PHP Data Types
 • array • associative array
 • date & time • number
 • class, object • regular expression
 • string • variables
PHP Loop & Conditions
 • continue & break • for loop
 • foreach • if else
 • not equal • while
PHP File System Functions
 • copy • delete, unlink
 • dirname • download url
 • file_exists • is_file, filesize
 • mkdir, rmdir • read file
 • scandir • write file
PHP Popular Topics
 • ajax • clone
 • comments • constants
 • cookie • database
 • defined • die
 • form validation • gd, draw images
 • global variables • header url
 • heredoc • mail
 • pass by reference • print
 • regular expr. • sessions
 • threads • xml parse
PHP Math Functions
 • abs • cos
 • exp • floor & ceil
 • fmod • log
 • max & min • pow
 • round • sin
 • sqrt • tan
endmemo.com © 2024  | Terms of Use | Privacy | Home