A8C_Files::purge_cache_servers PHP Метод

purge_cache_servers() приватный Метод

private purge_cache_servers ( $requests )
    private function purge_cache_servers($requests)
    {
        $curl_multi = curl_multi_init();
        foreach ($requests as $req) {
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, "http://{$req['ip']}{$req['uri']}");
            curl_setopt($curl, CURLOPT_PORT, $req['port']);
            curl_setopt($curl, CURLOPT_HTTPHEADER, array("Host: {$req['host']}"));
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $req['method']);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_NOBODY, true);
            curl_setopt($curl, CURLOPT_HEADER, true);
            curl_setopt($curl, CURLOPT_TIMEOUT, 5);
            curl_multi_add_handle($curl_multi, $curl);
        }
        $running = true;
        while ($running) {
            do {
                $result = curl_multi_exec($curl_multi, $running);
            } while ($result == CURLM_CALL_MULTI_PERFORM);
            if ($result != CURLM_OK) {
                error_log('curl_multi_exec() returned something different than CURLM_OK');
            }
            curl_multi_select($curl_multi, 0.2);
        }
        while ($completed = curl_multi_info_read($curl_multi)) {
            $info = curl_getinfo($completed['handle']);
            if (!$info['http_code'] && curl_error($completed['handle'])) {
                error_log('Error on: ' . $info['url'] . ' error: ' . curl_error($completed['handle']) . "\n");
            }
            if ('200' != $info['http_code']) {
                error_log('Request to ' . $info['url'] . ' returned HTTP code ' . $info['http_code'] . "\n");
            }
            curl_multi_remove_handle($curl_multi, $completed['handle']);
        }
        curl_multi_close($curl_multi);
    }