Heim > Backend-Entwicklung > PHP-Tutorial > Wie man mit PHP asynchrone Anfragen implementiert und Rückgabewerte ignoriert

Wie man mit PHP asynchrone Anfragen implementiert und Rückgabewerte ignoriert

little bottle
Freigeben: 2023-04-06 09:22:01
nach vorne
3714 Leute haben es durchsucht

Der Hauptinhalt dieses Artikels besteht darin, PHP zum Implementieren asynchroner Anforderungen und zum Ignorieren von Rückgabewerten zu verwenden. Ich hoffe, dass er für Sie hilfreich ist.

Projektanforderungen, das Szenario ist wie folgt:

Unter bestimmten Bedingungen ist es notwendig, die Schnittstelle aufzurufen, um mehrere Anforderungen zum Ausführen des Skripts zu senden, aber da die Skriptausführungszeit unter jeder Anforderung liegt Es dauert ungefähr eine halbe Stunde. Geben Sie also auf und geben Sie das Ausführungsergebnis zurück. Es ist lediglich erforderlich, dass es innerhalb von Sekunden gesendet werden kann.

Der Code lautet wie folgt:

/**
     * 发起异步请求,忽略返回值
     * @param $url  请求url
     * @return bool
     */
    function asyncPost($url)
    {
        $args = parse_url($url); //对url做下简单处理
        $host = $args['host']; //获取上报域名
        $path = $args['path'] . '?' . $args['query'];//获取上报地址
        $fp = fsockopen($host, 80, $error_code, $error_msg, 1);
        if (!$fp) {
            Log::record('获取错误信息:'.$error_code . ' _ ' . $error_msg, Log::INFO, true);
            Log::save('',LOG_PATH . '_' . date('y_m_d') . '.txt');
            return false;//
        } else {
            stream_set_blocking($fp, true);//开启了手册上说的非阻塞模式
            stream_set_timeout($fp, 1);//设置超时
            $header = "GET $path HTTP/1.1\r\n";  //注意 GET/POST请求都行 我们需要自己按照要求拼装Header http协议遵循1.1
            $header .= "Host: $host\r\n";
            $header .= "Connection: close\r\n\r\n";//长连接关闭
            fputs($fp, $header);
            fclose($fp);
        }
    }
Nach dem Login kopieren

Das Beispiel lautet wie folgt:

$url[0] = "http://XXXX/demo.php?a=1&b=2&c=3&d=4&e=5";
$url[1] = "http://XXXX/demo.php?a=1&b=2&c=3&d=4&e=5";
$url[2] = "http://XXXX/demo.php?a=1&b=2&c=3&d=4&e=5";
$url[3] = "http://XXXX/demo.php?a=1&b=2&c=3&d=4&e=5";
$url[4] = "http://XXXX/demo.php?a=1&b=2&c=3&d=4&e=5";
$url[5] = "http://XXXX/demo.php?a=1&b=2&c=3&d=4&e=5";
foreach($url as $k=>$val){
    asyncPost($val);
}
Nach dem Login kopieren

Das Ergebnis lautet wie folgt:

Das Obige ist von mir. Die Ergebnisse mehrerer Tests, der Zeitbereich ist wie oben.

Verwandte Tutorials: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWie man mit PHP asynchrone Anfragen implementiert und Rückgabewerte ignoriert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage