[英]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.