接受大量输入的请求(千)

时间:2019-08-29 09:45:54

标签: php laravel laravel-5

有一个需要提交具有成百上千输入的请求的应用程序。

Laravel似乎对请求的参数数量有所限制。

以下是当前请求状态的一些图片:

  • enter image description here
  • enter image description here

数组不超过48个,最后一个数组不超过47个。

我该如何解决?

4 个答案:

答案 0 :(得分:1)

Laravel没有真正的限制,但是PHP 查看变量:php.ini中的max_input_vars 它应该做的工作 尝试

<?php

$API_Url = 'https://www.googleapis.com/youtube/v3/';
$API_Key = '...';
$channelId = 'UCX6OQ3DkcsbYNE6H8uQQuVA';

$parameter = [
    'id'=> $channelId,
    'part'=> 'contentDetails',
    'key'=> $API_Key
];
$channel_URL = $API_Url . 'channels?' . http_build_query($parameter);
$json_details = json_decode(file_get_contents($channel_URL), true);

$playlist=$json_details['items'][0]['contentDetails']['relatedPlaylists']['uploads'];

$parameter = [
    'part'=> 'snippet',
    'playlistId' => $playlist,
    'maxResults'=> 10,
    'key'=> $API_Key
];
$channel_URL = $API_Url . 'playlistItems?' . http_build_query($parameter);
$json_details = json_decode(file_get_contents($channel_URL), true);


$my_videos = [];
foreach($json_details['items'] as $video){
    //$my_videos[] = $video['snippet']['resourceId']['videoId'];
    $my_videos[] = array( 'v_id'=>$video['snippet']['resourceId']['videoId'], 'v_name'=>$video['snippet']['title'] );
}

while(isset($json_details['nextPageToken'])){
    $nxt_page_URL = $channel_URL . '&pageToken=' . $json_details['nextPageToken'];
    $json_details = json_decode(file_get_contents($nxt_page_URL), true);
    foreach($json_details['items'] as $video)
        $my_videos[] = $video['snippet']['resourceId']['videoId'];
}

print_r($my_videos);

//foreach($my_videos as $video){
    //if(isset($video)){

        //echo '<a href="https://www.youtube.com/watch?v='. $video['v_id'] .'">
                    //<div>'. $video['v_name'] .'</div>
            //</a><br><br><br>';
    //}
//}

或更多 但是发送json字符串可能是一个“更干净”的解决方案。

答案 1 :(得分:0)

您达到的限制是ie.document.getElement.Name("username").Value = 1234 ie.document.getElement.Id("username").Value = 1234 ie.document.getElement.Class("username").Value = 1234 ie.document.getElement.Type("username").Value = 1234 ie.document.getElementByClassName("username").Value = 1234 ie.document.getElementById("username").Value = 1234 ie.document.getElementByName("username").Value = 1234 ie.document.getElementByType("username").Value = 1234 中的max_input_vars,默认为4000。

您的服务器中可能还会有其他配置(php.iniapache,...)。

我从来不需要增加它,所以我不知道这样做是否是个好主意。

如JCode所说,尝试压缩输入优先并计算执行时间限制可能是一个很好的解决方案。

答案 2 :(得分:0)

请使用

max_input_vars = 15000

max_input_vars in php.ini which is by default 4000.

答案 3 :(得分:-1)

我认为没有办法提高Laravel本身的限制-但您可以使用javascript序列化表单,然后仅通过一个输入将其发送为文本。