কোনও পোস্টের অনুরোধের আকার সীমা কত?


268

দুঃখিত এটি যদি সদৃশ হয় তবে আমার মনে হয় এটি হবে তবে কিছুই খুঁজে পেল না।

আমার কাছে একটি ফ্লেক্স অ্যাপ্লিকেশন রয়েছে যা আমি আইইয়ের মাধ্যমে পিএইচপি / মাইএসকিএল সার্ভারে ডেটা পোস্ট করছি। আমি এখনও কোনও সমস্যায় পড়িনি, তবে সময়ের আগে এই বিষয়টি জানলে আমার হতাশাগ্রস্ততা ও পরিশ্রম অনেকটা বাঁচতে পারে। HTTP- র মাধ্যমে ডেটা পোস্ট করার জন্য কি আকারের সীমা রয়েছে?

এই নিবন্ধটি বলে: না: http://www.netlobo.com/ie_form_submit.html

এই আলোচনাটি হ্যাঁ বলেছে: http://bytes.com/topic/php/answers/538226- কি- ম্যাক্সিমাম-limit-used-post-method

এবং অনলাইনে আমি কী সন্ধান করতে পেরেছি তা সবগুলিই পিছনে পিছনে যায়। সুতরাং দয়া করে ব্যক্তিগতভাবে পরীক্ষিত / যাচাই করা সংখ্যার উত্তরগুলি সীমাবদ্ধ করুন।

আমি একটি এক্সএমএল স্ট্রিং পোস্ট করতে চাই যা বেশ বড় হতে পারে (5 এমবি অবধি বলুন)।

যদি এটি কোনও পার্থক্য করে: ব্রাউজারটি সর্বদা আইই হবে (আমাদের পণ্যটির এটি প্রয়োজন), পোস্ট আসছে এবং HTTP পরিষেবা ফ্লেক্সে, ওয়েব সার্ভারটি পিএইচপি, ডিবি মাইএসকিউএল।


উত্তর:


203

এটি সার্ভার কনফিগারেশনের উপর নির্ভর করে। আপনি যদি লিনাক্স বা এর অনুরূপ পিএইচপি এর সাথে কাজ করছেন তবে আপনি .htaccess কনফিগারেশন ফাইলটি ব্যবহার করে এটি নিয়ন্ত্রণ করতে পারেন:

#set max post size
php_value post_max_size 20M

এবং, হ্যাঁ, আমি ব্যক্তিগতভাবে সত্যটি প্রমাণ করতে পারি যে এটি কাজ করে :)

আপনি যদি আইআইএস ব্যবহার করে থাকেন তবে আপনি কীভাবে এই নির্দিষ্ট মানটি সেট করবেন সে সম্পর্কে আমার কোনও ধারণা নেই।


3
এই post_max_sizeসেটিংটি কোথায় ? আমি পিএইচপি করার পরিবর্তে নতুন এবং আমি এটি আমাদের কোড বেসে কোথাও খুঁজে পাই না (স্বপ্নের ওয়েভার সন্ধানের সমস্ত প্রক্রিয়াটি ব্যবহার করে)। আমি আমাদের সিস্টম অ্যাডমিনদের জিজ্ঞাসা করব তবে তারা আসলেই। :
ইনভার্টেড

10
সুতরাং আপনি এই আকারটি যে কোনও আকারে সেট করতে পারেন? কোনও প্রোটোকল সীমাবদ্ধতা নেই? আপনি এটি 99999999999999999999999M এ সেট করতে পারেন?
প্যারা

8
@ পাপা - এই পোস্টটি বলছে যে আপনি এটিকে আপনার মেশিনের স্মৃতি হিসাবে উচ্চতর সেট করতে পারেন। এটি আরও বলে যে ডিফল্টটি 2MB।
রাস্টি দ্য বয়রোবট

37
যেহেতু এটি পিএইচপি, তাই আমি এটির মতো আশা করছিলাম যে এটি কোনও মান গ্রহণ করবে এবং যখন এটি আপনার মেশিনের সীমাতে পৌঁছে তখন কেবল সেফএল্ট ....
রুস্টি দ্য বয়রোবট

12
এছাড়াও, পিএনপি.আইএনআই ফাইলে একটি সেটিংস রয়েছে: ম্যাক্স_আইনপুট_ভারগুলি যা আমার পিএইচপি: 5.4.16 এর সংস্করণে 1000 এ ডিফল্ট হয়েছে the $ _COOKIE সুপারগ্লোবাল পৃথকভাবে) "রেফ: php.net/manual/en/info.configration.php#ini.max-input-vars
নিকোলে ইভানভ

73

একটি অনুরোধের url অংশটি (জিইটি এবং পোষ্ট) ব্রাউজার এবং সার্ভার উভয়ই সীমাবদ্ধ করতে পারে - সাধারণত নিরাপদ আকার 2KB হয় কারণ প্রায় কোনও ব্রাউজার বা সার্ভার নেই যে একটি ছোট সীমা ব্যবহার করে।

কোনও ধরণের ডস আক্রমণ আক্রমণ রোধ করার জন্য সার্ভারের দ্বারা একটি অনুরোধের (পিওএসটি) বডি সাধারণত * সীমাবদ্ধ থাকে (নোট করুন যে এর অর্থ চরিত্রের পালানো শরীরের বাইট আকার বাড়িয়ে তুলতে পারে)। সর্বাধিক সাধারণ সার্ভার সেটিংটি হ'ল 10 এমবি, যদিও সমস্ত জনপ্রিয় সার্ভার এটিকে কোনও সেটিং ফাইল বা প্যানেলের মাধ্যমে বাড়িয়ে বা হ্রাস করতে দেয়।

* পুরানো সেল ফোন বা অন্যান্য ছোট ডিভাইস ব্রাউজারগুলির সাথে কিছু ব্যাতিক্রম উপস্থিত রয়েছে - এই ক্ষেত্রে এটি ডিভাইসে অন্য কোনও কিছুর জন্য এই উদ্দেশ্যে সংরক্ষিত গাদা জায়গার ফাংশন।


2
বিবেচনা করে ব্রাউজারের সীমাবদ্ধতা সম্পর্কে কিছু বলুনcurl
যুগাল জিন্দল

12
আমি জানি আমি এখানে সময়ের চেয়ে কিছুটা পিছনে আছি তবে এই জাতীয় উত্তরগুলির কারণেই আমি স্ট্যাকওভারফ্লোকে ভালবাসি। প্রয়োজনীয় এবং তার বাইরেও কিছু মূল্যবান পটভূমি তথ্য সরবরাহ করা।
ডারমাউজ

50

এছাড়াও, PHP.INI ফাইলে একটি সেটিং রয়েছে:

max_input_vars

যা আমার পিএইচপি এর সংস্করণে: 5.4.16 ডিফল্ট 1000 এ।

ম্যানুয়াল থেকে: "কয়টি ইনপুট ভেরিয়েবল গ্রহণ করা যেতে পারে (সীমা $ _GET, $ _POST এবং separately _COOKIE সুপারগ্লোবাল পৃথকভাবে প্রয়োগ করা হয়)"

রেফারেল: http://www.php.net/manual/en/info.configration.php#ini.max-input-vars


14

আপনি php.ini ভেরিয়েবল সেট করে প্রচুর পরিমাণে ডেটা পোস্ট করতে পারেন: max_input_vars এই ভেরিয়েবলের ডিফল্ট আকার 1000 হয় তবে আপনি যদি প্রচুর পরিমাণে ডেটা প্রেরণ করতে চান তবে আপনাকে সেই অনুযায়ী আকার বাড়াতে হবে। আপনি যদি ini_set থেকে আকার সেট করতে না পারেন তবে আপনাকে htaccessসরাসরি পিএইচপি.আইএনআই ফাইলের মাধ্যমে বা এটি করে করতে হবে do

max_input_vars  2500
memory_limit    256M

5

ডেভিড যেমন উল্লেখ করেছে, আমি বেশিরভাগ ক্ষেত্রেই কেবিতে যাব।

php_value post_max_size 2KB

দ্রষ্টব্য: আমার ফর্মটি সহজ, কয়েকটি পাঠ্য বাক্স, দীর্ঘ পাঠ্য নয়।


2

ডিফল্টরূপে, পোস্ট অনুরোধটির সর্বোচ্চ আকার 8 এমবি থাকে। তবে আপনি এটি আপনার প্রয়োজনীয়তা অনুসারে পরিবর্তন করতে পারেন। পরিবর্তনটি php.ini ফাইল (পিএইচপি কনফিগারেশন সেটিংস) খোলার মাধ্যমে করা যেতে পারে।

অনুসন্ধান

post_max_size=8M  //for me, that was on line:771

আপনার প্রয়োজনীয়তা অনুযায়ী 8 প্রতিস্থাপন করুন।


1

কোনও সীমা আছে কিনা তা সিদ্ধান্ত নেওয়ার জন্য এটি HTTP সার্ভারের to আমি যে পণ্যটিতে কাজ করি তা প্রশাসককে সীমাটি কনফিগার করতে দেয়।


এছাড়াও, পিএনপি.আইএনআই ফাইলে একটি সেটিংস রয়েছে: ম্যাক্স_আইনপুট_ভারগুলি যা আমার পিএইচপি: 5.4.16 এর সংস্করণে 1000 এ ডিফল্ট হয়েছে the $ _cookie superglobal হয় আলাদাভাবে) "সূত্র .: [ php.net/manual/en/info.configuration.php#ini.max-input-vars][1] [1]: php.net/manual/en/info.configuration .php # ini.max-ইনপুট-ওয়ার্স
নিকোলায় ইভানোভ

1

এর অন্যতম সেরা সমাধান, আপনি একাধিক বা এক হাজারেরও বেশি ইনপুট ক্ষেত্র ব্যবহার করবেন না। আপনি কোনও বিশেষ চরিত্রের সাথে একাধিক ইনপুট একত্রিত করতে পারেন, প্রাক্তন জন্য। @

এটা দেখ:

<input type='text' name='hs1' id='hs1'>
<input type='text' name='hs2' id='hs2'>
<input type='text' name='hs3' id='hs3'>
<input type='text' name='hs4' id='hs4'>
<input type='text' name='hs5' id='hs5'>

<input type='hidden' name='hd' id='hd'>

যে কোনও স্ক্রিপ্ট (জাভাস্ক্রিপ্ট বা জেএসক্রিপ্ট) ব্যবহার করে,

document.getElementById("hd").value = document.getElementById("hs1").value+"@"+document.getElementById("hs2").value+"@"+document.getElementById("hs3").value+"@"+document.getElementById("hs4").value+"@"+document.getElementById("hs5").value

এটির সাহায্যে আপনি max_input_varsসমস্যাটিকে বাইপাস করবেন । যদি আপনি max_input_varsphp.ini ফাইলটি বৃদ্ধি করেন তবে এটি সার্ভারের জন্য ক্ষতিকারক কারণ এটি আরও বেশি সার্ভার ক্যাশে মেমরি ব্যবহার করে এবং এটি কখনও কখনও সার্ভারকে ক্রাশ করতে পারে।


1
আমি দেখতে পাচ্ছি না কীভাবে কনটেনটিং ভেরিয়েবলগুলি স্মৃতি সঞ্চয় করে। প্রতিটি ASCII- অক্ষর মেমরির 1 বাইট ব্যবহার করে। একটি স্ট্রিং (প্রযুক্তিগতভাবে একটি চর অ্যারে যদি আমি ভুল না করি) স্ট্রিংয়ের দৈর্ঘ্য হিসাবে n * 1 বাইট ব্যবহার করে। কেন অন্য চরিত্র যুক্ত করা ব্যবহৃত স্মৃতিশক্তি হ্রাস করবে? এই গণনায় আপনি স্ট্রিংটিতে যুক্ত প্রতিটি '@' এর জন্য আরও একটি বাইট যুক্ত করবেন। অবশ্যই আপনি ব্যবহৃত ভেরিয়েবলগুলির গণনা হ্রাস করেন তবে অতিরিক্ত কাজগুলি আবার বিভক্ত করার সাথে আপনি এই "জয়" প্রদান করেন।
DBX12

2
@ ডিবিএক্স 12 আপনি এই কৌশলটির সাহায্যে মেমরিটি সংরক্ষণ করবেন না, আপনি এইটির সাহায্যে max_input_varsবিকল্পটি বাইপাস করতে পারেন php.ini। ঠিক কী বলা হয়নি, তবে এখনও কার্যকর।
রিকোব্রেজাররা

আকার সীমা অতিক্রম দুটি কারণের উপর নির্ভর করে: প্রথমত, পৃথক কী / মান স্ট্রিং আকারের আকার, অর্থাৎ কী এবং / অথবা মান দিকের মধ্যে অক্ষর গণনা। দ্বিতীয়টি, কী / মান জোড়ার পরিমাণ, এমনকি প্রতিটি জোড়ের ছোট অক্ষরের পরিমাণ থাকলেও। উপরের দুটি সামগ্রিক আকারের সীমা ছাড়িয়ে যাওয়ার ইস্যুটি শেষ হয়। সুতরাং, আমার কাছে, এই উত্তরটি সঠিক এবং প্রশ্নের সাথে সম্পর্কিত এবং একটি সমস্যার এক দিক তুলে ধরে।
এলনুর শাবানভ

0

ডেভেলপারদের জন্য যারা ওয়েব হোস্টিংয়ের কারণে পিএইচপি কনফিগারেশন পরিবর্তন করতে পারবেন না। (আমার সেটিংস 256MB সর্বাধিক আকার, 1000 সর্বোচ্চ ভেরিয়েবল)

আমি একই ইস্যু পেয়েছি যে 5 টির মধ্যে মাত্র 2 টি বড় ডেটা অবজেক্টস (এসোসিয়েটিভ অ্যারে) সাবস্ট্রাকচার সহ প্রাপ্ত হয়েছে সার্ভারের পাশে।

আমি জানতে পারি পোস্ট অনুরোধে পুরো স্তরটি "সমতল" করা হচ্ছে। সুতরাং, একটি বস্তু কয়েকশ আক্ষরিক পরিবর্তনশীল হয়ে যায়। শেষে, 5 অবজেক্ট ভেরিয়েবলের পরিবর্তে এটি কয়েক শতাধিক প্রাথমিক ভেরিয়েবল প্রেরণ করছে।

সমাধান এই ক্ষেত্রে substructures প্রতিটি ধারাবাহিকভাবে হয় স্ট্রিং মধ্যে। তারপরে এটি সার্ভারে 5 স্ট্রিং ভেরিয়েবল হিসাবে প্রাপ্ত হয়। উদাহরণ: {variable1:JSON.stringify(myDataObject1),variable2:JSON.stringify(myDataObject2)...}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.