Heim  >  Artikel  >  Backend-Entwicklung  >  Asynchrone Ausführung der PHP-Aufgabe fsockopen

Asynchrone Ausführung der PHP-Aufgabe fsockopen

coldplay.xixi
coldplay.xixinach vorne
2020-06-08 11:28:372258Durchsuche

Asynchrone Ausführung der PHP-Aufgabe fsockopen

Praktische Methode für PHP, um die Aufgabe fsockopen asynchron auszuführen

Hier haben wir eine Funktion basierend auf fsockopen erstellt Funktion Verwenden Sie fsockopen, um auf die URL zuzugreifen. Beim Zugriff ist es jedoch nicht erforderlich, den in der URL angezeigten Inhalt abzurufen, sondern stellt lediglich eine Zugriffsanforderung aus und der Zugriff wird sofort nach Eintreffen der Anforderung geschlossen.

Der Vorteil besteht darin, dass nicht darauf gewartet werden muss, dass die besuchte URL zuverlässige Informationen zurückgibt, was Zeit spart. Für normale Besucher beträgt die Ausführungszeit zwischen 0,1 und 0,2 Sekunden fast nicht wahrnehmbar. Wenn Sie es verwenden, müssen Sie daher nur diese Funktion und die entsprechende URL aufrufen. Hier wird jedoch kein Teil zur Datenübertragung bereitgestellt. Tatsächlich müssen Sie nur den Beitragsinhalt zum $header hinzufügen.

/**
 * @生生 2018/12/24 19:25:06
 * [asynchronous PHP异步执行任务]
 * @param  string $url       执行任务的url地址
 * @param  array  $post_data 需要post提交的数据POST
 * @param  array  $cookie    cookie数据用于登录等的设置(此处内部调用,无需鉴权)
 * @return boole
 */
public function asynchronous($url,$post_data = array())
{
    $url_array = parse_url($url);
    dump($url_array);
    //用fsockopen()尝试连接 
    $fp = fsockopen($url_array['host'], 80, $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
        //建立成功后,向服务器写入数据 
        $getPath = isset($url_array[&#39;path&#39;]) ? $url_array[&#39;path&#39;] : &#39;/&#39;;
        $out = "GET /".$getPath."/ HTTP/1.1\r\n";
        $out .= "Host:".$url_array[&#39;host&#39;]."\r\n";
        $out .= "Connection: Close\r\n\r\n";
       
        fwrite($fp, $out);
        /*忽略执行结果
        while (!feof($fp)) {
            echo fgets($fp, 128);
        }*/
        //关闭链接
        fclose($fp);
    }
}

Aufrufmethode

/**
*  异步方法
*  参数:(string)要执行的方法url,(array)传入参数
*/
function yibu(){
    $this->asynchronous(&#39;https://www.liqingbo.cn/index.php/admin/index/test&#39;,[&#39;1&#39;=>&#39;haha&#39;]);
    //直接返回结果
    echo &#39;操作成功&#39;;
}

Empfohlenes Tutorial: „PHP Video Tutorial

Das obige ist der detaillierte Inhalt vonAsynchrone Ausführung der PHP-Aufgabe fsockopen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:liqingbo.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen