page = $page; $this->socket = $socket; $this->template = $template; for ($i = 0; $i < 10; $i++) { if (file_exists($socket)) { break; } usleep(100_000); // wait 100ms } } public function go() { $ch = curl_init(); $url = "http://localhost".$this->page; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_UNIX_SOCKET_PATH, $this->socket); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); // todo: get headers / cookies, forward back response return $output; } public function render() { $response = $this->go(); $template = file_get_contents($this->template); return str_replace("{{content}}", $response, $template); } }