簡體   English   中英

如何使用 php curl 將大型 json 數據發送到 api?

[英]How to send large json data to api using php curl?

將大量數據從服務器 A 發布到 B

我正在使用 Laravel api。 我需要使用 PHP Curl 從服務器 a 向 Laravel API 發布大量數據(> 8mb)。 如果數據大小小於 5mb,它可以正常工作,但是當數據量很大時,在 Laravel 端顯示空帖子數據。

請檢查我的代碼。

PHP CURL(服務器 A):

$payload=array();
$payload['a']='123';
$payload['name']='i';
$payload['i']=$base64;
$payload['b']='abc';

$request_headers = array(
                "Content-Type:application/json",
                'Content-length:' . strlen($payload)
            );

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
      curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
      curl_setopt($ch, CURLOPT_BUFFERSIZE, 104857640);
      curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);
      curl_setopt($ch, CURLOPT_TIMEOUT, 300);
      curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
      curl_setopt($ch, CURLOPT_POSTREDIR, 3);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      
      $res=curl_exec($ch);

$base64是 php 變量,它包含 7mb 的字符串(動態值)。

Laravel 控制器(POST 方法 api):

$a=$req->a;
$b=$req->b;
$name=$req->name;
$i=$req->i;

        if($a=='' || $b=='')
        {
           
            $arr["req"]=  $request->all();
            $data = $request->getContent();
            $arr["data"] = $data;
            $arr["headers"]=$request->headers->all();
            return response()->json($arr); 
        }

$request->all()

返回空

$request->getContent();

返回 base64 僅 1.1mb。

我也嘗試將“期望:”放入 curl 標題,但沒有運氣。

PHP 限制也增加了:

   php_value max_execution_time 300
   php_value max_input_time 600
   php_value memory_limit 400M
   php_value post_max_size 400M
   php_value upload_max_filesize 400M

看起來像一個php限制。

ini_get('post_max_size');

如果它比需要的少,那么運行

ini_set('post_max_size', '32');

文件也一樣。

ini_get('upload_max_filesize ');

然后

ini_set('upload_max_filesize ', '30M');

有些服務器不允許 ini_set(),在這種情況下,您將不得不通過 php.ini 或主機設置進行修改。

***** 請注意,帖子大小必須始終大於上傳大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM