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['path']) ? $url_array['path'] : '/'; $out = "GET /".$getPath."/ HTTP/1.1\r\n"; $out .= "Host:".$url_array['host']."\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('https://www.liqingbo.cn/index.php/admin/index/test',['1'=>'haha']); //直接返回结果 echo '操作成功'; }
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!