Heim  >  Artikel  >  Backend-Entwicklung  >  Asynchrone PHP-Verarbeitung – Hochladen von Dateien

Asynchrone PHP-Verarbeitung – Hochladen von Dateien

不言
不言Original
2018-05-09 09:46:501851Durchsuche

Dieser Artikel befasst sich hauptsächlich mit der asynchronen Verarbeitung und dem Hochladen von PHP-Dateien. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.

// 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' => '已经发起申请']);
    }
>Das Obige ist der gesamte Inhalt Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Methoden zur Implementierung der asynchronen PHP-Verarbeitung

Detaillierte Erläuterung der Async-Helper-Beispiele für asynchrone PHP-Prozesse

Mehrere gängige Methoden der asynchronen Ausführung von PHP

Das obige ist der detaillierte Inhalt vonAsynchrone PHP-Verarbeitung – Hochladen von Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:PHP-Dateisuche (Dateisuche)Nächster Artikel:PHP-Dateisuche (Dateisuche)