} public function run() { if ($url = $this->url) { /* * If a large amount of data is being requested, you might want to * fsockopen and read using usleep in between reads */ $this->data = file_get_contents($url); } else { printf("Thread #%lu was not provided a URL\n", $this->getThreadId()); } } } $t = microtime(true); $g = new WebRequest(sprintf("http://www.google.com/?q=%s", rand() * 10)); /* starting synchronized */ if ($g->start()) { printf("Request took %f seconds to start ", microtime(true) - $t); while ($g->isRunning()) { echo "."; $g->synchronized(function () use($g) { $g->wait(100); }); } if ($g->join()) { printf(" and %f seconds to finish receiving %d bytes\n", microtime(true) - $t, strlen($g->data)); } else { printf(" and %f seconds to finish, request failed\n", microtime(true) - $t); } }