Maison  >  Article  >  développement back-end  >  fichiers de téléchargement de traitement asynchrone php

fichiers de téléchargement de traitement asynchrone php

不言
不言original
2018-05-09 09:46:501798parcourir

Cet article présente principalement le traitement-téléchargement asynchrone PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

// fsockopenpublic function testFsockeopen(){
        $cookie = $_COOKIE; 
        $url = 'http://localhost/jtzn/src/server/index.php/Admin/Station/submitimp'; //异步触发的文件地址
        $url_array = parse_url($url); //解析url
        $port = isset($url_array['port']) ? $url_array['port'] : 80;        
        $errno = '';        
        $errstr = '';        
        $timeout = 30;        
        $fp = fsockopen($url_array['host'], $port, $errno, $errstr, $timeout); //开启
        if (!$fp) {            
        return false;
        }        //模拟数据
        $boundary = "----" . substr(md5(time()), 8, 16);        
        $data     = "--$boundary\r\n";        
        foreach ($_FILES as $key => $file) {            
        $data .= "Content-Disposition: form-data; name=\"" . $key . "\"; filename=\"" . $file['name'] . "\"\r\n";            
        $data .= "Content-Type: " . $file['type'] . "\r\n\r\n";            
        $data .= file_get_contents($file['tmp_name']) . "\r\n";            
        $data .= "--$boundary--\r\n";
        }        //构建请求头
        $header  = "POST $url_array[path] HTTP/1.1\r\n";        
        $header .= "Host:$url_array[host]\r\n";        
        $header .= "Content-type:multipart/form-data; boundary=$boundary\r\n";        
        $header .= "Content-length:" . strlen($data) . "\r\n";        
        $_cookie = strval(NULL);        
        foreach ($cookie as $k => $v) {            
        $_cookie .= $k . "=" . $v;
        }        
        $cookie_str = "Cookie: " . $_cookie . " \r\n"; //传递Cookie用于登录验证
        $header .= $cookie_str;        
        $header .= "Connection:close\r\n\r\n";        
        $header .= $data;
        fwrite($fp, $header);        //不要接收服务器的返回 ,这样就不用等待了
        fclose($fp);        
        echo json_encode(['msg' => 'ok', 'info' => '已经发起申请']);
    }
    public function testCurl(){
        $url = 'http://localhost/jtzn/src/server/index.php/Admin/Station/submitimp';        
        $file = $_FILES['updataexcel2007'];        
        $post_data['updataexcel2007'] = curl_file_create(realpath($file['tmp_name']), $file['type'], $file['name']); //curl上传文件
        $ch = curl_init();        
        $cookie = $_COOKIE;        
        $_cookie = strval(NULL);        
        foreach ($cookie as $k => $v) {            
        $_cookie .= $k . "=" . $v;
        }
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//执行结果是否被返回,0是返回,1是不返回
        curl_setopt($ch, CURLOPT_HEADER, 1);//参数设置,是否显示头部信息,1为显示,0为不显示
        //表单数据,是正规的表单设置值为非0
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 1);
        curl_setopt($ch, CURLOPT_COOKIE, $_cookie); //登录验证
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        curl_exec($ch);
        curl_close($ch);        
        echo json_encode(['msg' => 'ok', 'info' => '已经发起申请']);
    }

Ce qui précède est le résumé de. cet article. Tout le contenu est là, veuillez faire attention au site Web PHP chinois pour plus de contenu connexe.

Recommandations associées :

Méthodes d'implémentation du traitement asynchrone PHP

Explication détaillée des exemples d'aide asynchrone de processus asynchrone PHP

Plusieurs méthodes courantes d'exécution asynchrone 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!

Déclaration:
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