PHP Threads class supports thread based tasks. The
<?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://https://convert.idontcarewhatyouthink.net/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();
?>