国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

每次遠(yuǎn)程下載大文件,一到2047.99MB就停止了,摸不著頭腦

914739959

問題描述

下載代碼:

if (!file_exists($file_path)) {
            mkdir($file_path, 0777, true);
        }
        $file = @fopen($file_path_and_name, 'w');
        if (!$file) {
            return "Error:無法創(chuàng)建文件。";
        }

        // 初始化cURL
        $retry = 3;//重試3次
        $ch = curl_init($url);
        if (!$ch) {
            fclose($file);
            return "Error:無法初始化cURL。";
        }
        $headers = array(
            "ID:".config('static.APPID'),
            "APPKEY:".config('static.APPKEY'),
            );

        // 設(shè)置cURL選項(xiàng)
        curl_setopt_array($ch, [
            CURLOPT_FILE => $file,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_TIMEOUT=>0,
            CURLOPT_TIMEOUT_MS=>0,
            CURLOPT_CONNECTTIMEOUT=>0,
            CURLOPT_CONNECTTIMEOUT_MS=>0,
            CURLOPT_HTTPHEADER => $headers,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_SSL_VERIFYHOST => false,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_NOPROGRESS=>false,
//            CURLOPT_MAXFILESIZE=>9999999999,
            //請求回調(diào)函數(shù) 大約每秒回調(diào)一次
            CURLOPT_PROGRESSFUNCTION => function ($detail, $dltotal, $dlnow, $ultotal, $ulnow) use ($detail_id) {
                Db::table("pm_mytask_detail")->where('id',$detail_id)->update(['file_size_now'=>$dlnow]);
            },

        ]);

        // 執(zhí)行請求并檢查結(jié)果
        $success = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        $error = curl_error($ch);

        // 清理資源
        curl_close($ch);
        // 關(guān)閉文件
        fclose($file);

        // 根據(jù)執(zhí)行結(jié)果處理
        if ($success === false) {
            unlink($file_path_and_name); // 刪除可能已部分寫入的文件
            return "Error:" . $error;
        }
        if ($httpCode !== 200) {
            unlink($file_path_and_name);
            return "Error:下載失敗,HTTP狀態(tài)碼為 $httpCode";
        }
        Db::table("pm_gdp_mytask_detail")->where('id',$detail_id)->update(['download_state'=>'3']);
        return "文件下載成功:" ;

為此你搜索到了哪些方案及不適用的原因

一到了 2147476810 B 就停了, 就是2047.99MB ,這是什么原因? php緩存我已經(jīng)拉到最大4G了,還是不行,沒想到限制到底在哪?

945 4 0
4個(gè)回答

TM

設(shè)置的是靜態(tài)php的運(yùn)行內(nèi)存嗎

  • 914739959 2024-07-23

    php-cli.ini 的 memory_limit = 4096M ,也改了

小W

有沒有可能是系統(tǒng)限制文件大小就是2G?

  • 暫無評論
Noah

PHP版本:如果PHP運(yùn)行在32位模式下,它可能無法處理超過2GB的文件。
cURL庫版本:某些版本的cURL在32位系統(tǒng)上可能有類似的限制。
操作系統(tǒng):如果服務(wù)器運(yùn)行在32位操作系統(tǒng)上,這也可能導(dǎo)致類似的問題。

  • 914739959 2024-07-23

    linux是64位centos7.9 我看了 ,php也是64位我看了,但是這文件最后好像下載完成了,有2.1GB我看,但是curl的回調(diào)函數(shù)在2047MB的時(shí)候就斷了,后面沒執(zhí)行了,我后面換guzzle了,正常返回,正常結(jié)束了

914739959
       if (!file_exists($file_path)) {
            mkdir($file_path, 0777, true);
        }

        $headers = [
            "ID"=>config('static.APPID'),
            "APPKEY"=>config('static.APPKEY'),
        ];

        try {
            $pdfFileResource = fopen($file_path_and_name, 'w+');
            $httpClient = new Client();
            $response = $httpClient->get(
                $url,
                [
                    RequestOptions::SINK => $pdfFileResource,
                    'headers'=>$headers,
                ]
            );

            if ($response->getStatusCode() === 200) {
                Db::table("pm_mytask_detail")->where('id',$detail_id)->update(['download_state'=>'3']);
                return "下載成功:";
            }
            return "下載失敗";

        } catch (\Throwable $e) {
            return ($e->getMessage());
        }

這樣用guzzle好像就OK了,2.1G正常下載完畢,只是不能像Curl那樣在函數(shù)里回調(diào),時(shí)刻抓到下載進(jìn)度了

  • 暫無評論
??