Maison > développement back-end > tutoriel php > Exécution asynchrone de la tâche PHP fsockopen

Exécution asynchrone de la tâche PHP fsockopen

coldplay.xixi
Libérer: 2023-04-08 19:16:01
avant
2477 Les gens l'ont consulté

Exécution asynchrone de la tâche PHP fsockopen

Méthode pratique pour PHP pour exécuter de manière asynchrone la tâche fsockopen

Nous avons créé une fonction basée sur fsockopen Dans cela. fonction Utilisez fsockopen pour accéder à l'URL, mais pendant l'accès, vous n'êtes pas obligé d'obtenir le contenu affiché dans l'URL, mais émettez uniquement une demande d'accès, et l'accès est fermé immédiatement après l'arrivée de la demande.

L'avantage est qu'il n'est pas nécessaire d'attendre que l'URL visitée renvoie des informations fiables, ce qui fait gagner du temps. Le temps d'exécution de ce code est compris entre 0,1 et 0,2 seconde pour les visiteurs ordinaires. presque pas perceptible. Par conséquent, lors de son utilisation, il vous suffit d’appeler cette fonction et l’url correspondante. Cependant, aucune partie de transmission de données n'est fournie ici. Comment transmettre des données, en fait, il vous suffit d'ajouter le contenu de la publication à $header.

/**
 * @生生 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);
    }
}
Copier après la connexion

Méthode d'appel

/**
*  异步方法
*  参数:(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;;
}
Copier après la connexion

Tutoriel recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal