পিএইচপি তে এক্সিকিউশন টাইমআউট কীভাবে বাড়ানো যায়?


103

কিভাবে লেনদেনের সময়সীমা বাড়ানো যায়? আমি ভিডিও আপলোড করতে চাই, তবে বড় আকারের ভিডিও আপলোড করা হয়নি?

এটি ত্রুটি ছুড়ে ফেলে The process *** exceeded the timeout of 60 seconds.


4
"লেনদেনের সময়সীমা" সংজ্ঞায়িত করুন। কোথায় কাজ করে না?
পেক্কা

4
কেন আপনি তার "লেনদেন" সময় শেষ বলে মনে করেন?
আপনার সাধারণ সংবেদন

সংক্ষিপ্ত ভিডিওগুলি সফলভাবে আপলোড হয়েছে। তবে দীর্ঘ ভিডিও আপলোড করা হয়নি, আমার মনে হয় সময় শেষ হয়ে যায়।
আমির

ini_set ('পোস্ট_ম্যাক্স_সাইজ', '200 এম'); ini_set ('আপলোড_ম্যাক্স_ফাইলসাইজ', '200M'); ini_set ('ম্যাক্স_এক্সেকিউশন_টাইম', '200 এম'); ini_set ('ম্যাক্স_ ইনপুট_টাইম', '200 এম'); ini_set ('মেমরি_মিলিট', '200 এম'); সেট_টাইম_লিমিট (65536);
আমির

4
ফাইলটি আপলোড করার আগে ভাগ করে নেওয়া ভাল। ব্যবহারযোগ্য অনেকগুলি অ্যাপ রয়েছে। আমি প্লুপলোড প্রিফার করি।
bksi

উত্তর:


130

আপনার php.ini এ আপনাকে কিছু সেটিংস পরিবর্তন করতে হবে:

upload_max_filesize = 2M 
;or whatever size you want

max_execution_time = 60
; also, higher if you must - sets the maximum time in seconds

আপনার পিএইচপি.এন.ইআইটি আপনার পরিবেশ, আরও তথ্যের উপর নির্ভর করে অবস্থিত: http://php.net/manual/en/ini.list.php


দুঃখিত, আমি কোন খেই আপনি যে :( দ্বারা কি বোঝাতে চেয়েছেন করেছি
Hannes

@ আমির, আপনার ওয়েব সার্ভারের কনফিগারেশনে পরিবর্তন আনতে আপনার ওয়েবহোস্টের অনুমতি নেওয়া দরকার। প্রায়শই, তারা আপনাকে এমন জিনিসগুলি পরিবর্তন করতে দেয় না।
হেলোজোজিমি

আমি কি htaccess ফাইলে আপলোড_ম্যাক্স_ফাইলেস এবং সর্বোচ্চ_অ্যাক্সিউশন_টাইম পরিবর্তন করতে পারি?
আমির

4
@ কল, আমি দ্বিমত পোষণ করছি, তিনি পুরো অ্যাপ্লিকেশনটিতে নয়, উড়তে পরিবর্তন করতে চান, তাই তিনি কীভাবে এটি করতে পারেন তা জিজ্ঞাসা করেছেন। এমনকি যদি সে জিজ্ঞাসা করে যে কীভাবে তিনি কেবল কিছু জিনিস php.ini এ পরিবর্তন করতে পারেন তবে এটি একটি নবাগত প্রশ্ন হতে পারে, তবে একটি বৈধ প্রশ্ন সব একই।
হ্যানেস

4
@ ইলিয়ানঅনফ্রেই ঠিক আছে, কেবল এটি উল্লেখ করার প্রয়োজনীয়তাটি ফিল্ড করুন: ডি, তবে আপনি যদি জানেন না তবে এটি দেখার পক্ষে এখনও এটি ভাল ... "যাঁরা ইতিহাস থেকে শিখতে পারেন না তারা পুনরায় এটির জন্য নিয়তিবদ্ধ" এবং এগুলি সব …
হ্যানস

57

রানটাইম চলাকালীন খুব বেশি ব্যবহার করে আপনার সক্ষম হওয়া উচিত

set_time_limit(100);

http://php.net/manual/en/function.set-time-limit.php

বা আপনার ভোস্ট-কনফিগারেশনে

php_admin_value max_execution_time 10000

বিশ্বব্যাপী মৃত্যুদন্ড কার্যকর করার সময়সীমা যে কম হয় তা নির্ভরযোগ্য নয় এমন নির্ভরযোগ্য অ্যাপ্লিকেশনগুলির কার্য সম্পাদনের কারণে বেশিরভাগ ক্ষেত্রে ভাল ধারণা। সুতরাং আপনি কেবল সেই স্ক্রিপ্টগুলিকেই দীর্ঘায়িত হতে দেবেন যা একেবারে দরকার।

PS: পোস্ট_ম্যাক্স_সাইজ এবং আপলোড_ম্যাক্স_ফাইলসাইজ সম্পর্কে ভুলে যাবেন না (যেমন প্রথম উত্তরটি অলরেডিকে বলেছে)


যদি আপনি এটি সেট করেন তবে ঘুম উপেক্ষা করা হবে
স্নেক আইস

21

হ্যানসের উত্তর সম্পূর্ণ করতে।

আপনার php.ini এ আপনাকে কিছু সেটিংস পরিবর্তন করতে হবে:

upload_max_filesize = 2M 
;or whatever size you want

max_execution_time = 60
; also, higher if you must

যদি কেউ সীমাহীনভাবে রাখতে চান (কেন জানি না তবে আপনি যদি চান) তবে আপনি সময়টি 0 তে নির্ধারণ করতে পারেন:

আপনার php.ini এ আপনাকে কিছু সেটিংস পরিবর্তন করতে হবে:

upload_max_filesize = 0 

max_execution_time = 0

এবং আপনি যদি জানেন না তবে আপনার php.ini কোথায় .in আপনি আপনার সার্ভারে একটি ফাইল "name.php" করতে পারেন এবং এটিতে রাখতে পারেন:

<?php phpinfo(); ?>

এবং আপনার ওয়েবসাইটে, আপনি আপনার php.ini এর কনফিগারেশন দেখতে পাবেন এবং এটি কোথায় চিহ্নিত আছে marked

9 জানুয়ারী 2015 এ সম্পাদনা করুন:

আপনি যদি আপনার php.ini অ্যাক্সেস করতে না পারেন তবে আপনার কাছে আরও দুটি বিকল্প রয়েছে।

আপনি আপনার "name.php" ফাইলে সরাসরি এই লাইনটি সেট করতে পারেন তবে আমি এই বিকল্পটির জন্য আপলোড_ম্যাক্স_ফাইলেস খুঁজে পাই না:

set_time_limit(0);

বা ".htaccess" এ

php_value upload_max_filesize 0
php_value max_execution_time 0

9

আপনার যা করতে হবে তা যদি কেবল 1 বা 2 পৃষ্ঠাগুলির জন্য নির্দিষ্ট হয় তবে আমি সেট_টাইম_লিমিট ব্যবহার করার পরামর্শ দিচ্ছি যাতে এটি সম্পূর্ণ প্রয়োগকে প্রভাবিত করে না।

set_time_limit(some_values);

তবে অবশ্যই এই 2 টি মান (পোস্ট_ম্যাক্স_সাইজ এবং আপলোড_ম্যাক্স_ফাইলসাইজ) তদন্তের বিষয়।

আপনি হয় ini_set ফাংশন মাধ্যমে সেট করতে পারেন

ini_set('post_max_size','20M');
ini_set('upload_max_filesize','2M');

অথবা সরাসরি php.ini ফাইলে হ্যানসের প্রতিক্রিয়া মতো বা এটি নীচের মত iin .htaccess সেট করুন

php_value upload_max_filesize 2M
php_value post_max_size 20M

5

উপরের উত্তরের সংযোজন হিসাবে আপনি set_time_limit()ফাংশনটি ব্যবহার করতে পারেন :

http://php.net/manual/en/function.set-time-limit.php

0যুক্তি হিসাবে পাস করা আপনার স্ক্রিপ্টকে কোনও সময়সীমা ছাড়াই চালিত করবে।


ফাইল আপলোডগুলির সাথে সেট_টাইম_লিমিট () এর কোনও যোগসূত্র নেই
আপনার সাধারণ অনুভূতি

4
এটি কর্নেল শ্র্যাপেল যথেষ্ট সঠিক নয়। ইউনিক্সের পরিবেশে সর্বাধিক-প্রয়োগের সময়টিকে পিএইচপি-থ্রেড দ্বারা ব্যবহৃত ক্রমযুক্ত সিপিইউ-সময়ের সাথে তুলনা করা হয়, উইন্ডোজ সিস্টেমে পরম সময় ব্যবহৃত হয়। আপলোড করা বেশিরভাগ ক্ষেত্রে "অলস সময়" (আইও-ওয়েট)। আপনি দেখতে পেলেন যে আপলোডগুলি খুব বেশি সময় নিলেও বন্ধ হতে পারে।
ক্রিস্টোফ স্ট্র্যাসেন

5

আপনি যদি মাইক্রোসফ্ট আইআইএস সার্ভার ব্যবহার করছেন , অন্যের দ্বারা উল্লিখিত php.ini সেটিংস ছাড়াও , আপনাকে আইআইএস সার্ভার ম্যানেজারে পিএইচপি ফাস্টসিজিআই অ্যাপ্লিকেশনটির জন্য এক্সিকিউশন টাইমআউট সেটিংস বাড়ানোর প্রয়োজন হতে পারে:

পদক্ষেপ 1) আইআইএস সার্ভার ম্যানেজারটি খুলুন (সাধারণত স্টার্ট মেনুতে সার্ভার ম্যানেজারের অধীনে , তারপরে সরঞ্জাম / ইন্টারনেট তথ্য পরিষেবাদি (আইআইএস) ম্যানেজার )।

পদক্ষেপ 2) মূল সংযোগে ক্লিক করুন (কোনও নির্দিষ্ট ডোমেনের সাথে সুনির্দিষ্ট নয়)।

পদক্ষেপ 3) আইআইএস বিভাগের অধীনে , ফাস্টসিজিআই সেটিংস (নীচে দেখানো হয়েছে) সন্ধান করুন।

এখানে চিত্র বর্ণনা লিখুন

ধাপ 4) এতে, পিএইচপি আবেদন ডান ক্লিক করুন এবং নির্বাচন সম্পাদনা ...

পদক্ষেপ 5) সময়সীমা পরীক্ষা করুন (নীচে দেখানো হয়েছে)।

এখানে চিত্র বর্ণনা লিখুন

আমার ক্ষেত্রে, এখানে ডিফল্ট সময়সীমা 70 এবং 90 সেকেন্ড ছিল; এর মধ্যে পূর্ববর্তী পিএইচপি স্ক্রিপ্টগুলিতে একটি 500 অভ্যন্তরীণ সার্ভার ত্রুটি সৃষ্টি করেছিল যা 70 সেকেন্ডের বেশি সময় নেয়।


3

আপনার টাইপ ছিল: ini_set ('max_input_time', '200M') - মান সেটটি INI_set ('ম্যাক্স_পিন্ড_টাইম', '200') এর মতো একটি int হওয়া দরকার


2

আমি জানি যে আপনি বিশেষত পিএইচপি সময়সীমা সম্পর্কে জিজ্ঞাসা করছেন, তবে অন্য কেউ যা উল্লেখ করেছেন বলে মনে হয় তা হ'ল ওয়েবসভারে একটি টাইমআউটও হতে পারে এবং এটি পিএইচপি সময়সীমার সাথে মিলে যায়।

সুতরাং যদি আপনি চেষ্টা করেছেন:

  1. Php.ini এ একটি লাইন যুক্ত করে সময়সীমা বাড়ানো: সর্বাধিক_সংশ্লিষ্ট_কাল = {সেকেন্ডের সংখ্যা অর্থাৎ এক মিনিটের জন্য 60}
  2. আপনার স্ক্রিপ্টে নিজেই টাইমআউট বৃদ্ধি করে: ইনআই_সেট ('সর্বোচ্চ_অধিকার_কালীন', 'seconds সেকেন্ডের সংখ্যা অর্থাৎ এক মিনিটের জন্য 60০)';

এবং আপনি phpinfo () ফাংশনটি পরীক্ষা করে দেখেছেন যে সর্বাধিক প্রকৃতপক্ষে সর্বাধিক বৃদ্ধি করা হয়েছে, তবে আপনি এটি .htaccess এ যুক্ত করার চেষ্টা করতে চাইতে পারেন যা নিশ্চিত করবে যে আপাচি নিজেই সময় শেষ না করে:

RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]

এখানে আরও তথ্য: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-des উল্লেখ-ini-set/


2

প্রথমে php.iniফাইল পাথ পরীক্ষা করে দেখুন phpinfo(); এবং তারপরে PHP.INIপ্যারামগুলি পরিবর্তন করা হয়েছে :

upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30

অ্যাপাচি পুনরায় চালু

set_time_limit(0); // safe_mode is off

ini_set('max_execution_time', 500); //500 seconds

দ্রষ্টব্য : আপনি php.iniলিনাক্সে সন্ধানের জন্য কমান্ডও ব্যবহার করতে পারেন

locate `php.ini`

1

আপনি যদি php.ini সম্পাদনা করতে না পারেন (উদাহরণস্বরূপ আপনার সার্ভারে) আপনি আপনার পিএইচপি কোডের মধ্যে থেকে php.ini পরামিতিগুলি পরিবর্তন করার চেষ্টা করতে পারেন। চেষ্টা করুন:

ini_set('max_execution_time', 'NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');

যদি এটি কাজ না করে, একইভাবে 'set_Time_limit' সেট করার চেষ্টা করুন, এর বাইরে আমি বলতে চাই যে আপনার হোস্টের সাথে যোগাযোগ করা আপনার একমাত্র বিকল্প। নিরাপদ মোডে থাকাকালীন এই সেটিংসটি সংশোধন করা যায় না।


4
হ্যানস পোস্ট করার এক মিনিট আগে এটি পেয়েছিল এবং সঠিকভাবে নির্দেশ করে যে সেট_টাইম_লিমিট () ini_set দ্বারা সেট করা উচিত নয়, এই উত্তরে বলা হয়েছে তবে সেকেন্ডটি বন্ধনীতে রেখে। ভোট দিয়েছেন হ্যান্স আপ।
জন

1

আপনি যদি নিরাপদ মোড হন তবে পরীক্ষা করুন - যদি না হয় - আপনি যা চান তার জন্য সময়সীমা (স্থানীয় মান) নির্ধারণ করুন:

if(!ini_get('safe_mode')){

    echo "safe mode off";
    set_time_limit(180);// seconds

    phpinfo();// see 'max_execution_time'
}

* নিরাপদ মোড 'চালু থাকলে' আপনি সময় সীমাটি সেট করতে পারবেন না।


1

alচ্ছিক: আপনি যদি php.ini সম্পর্কে কনফিগার সেট করেন তবে এখনও আপলোড করতে পারবেন না

এটি ত্রুটি কোড চেক করার জন্য পিএইচপি ফাংশন

$error_type = [];
$error_type[0] = "There is no error";
$error_type[1] = "The uploaded file exceeds the upload_max_filesize directive in php.ini.";
$error_type[2] = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
$error_type[3] = "The uploaded file was only partially uploaded.";
$error_type[4] = "No file was uploaded.";
//$error_type["5"] = "";
$error_type[6] = "Missing a temporary folder. Introduced in PHP 5.0.3.";
$error_type[7] = "Failed to write file to disk. Introduced in PHP 5.1.0.";
$error_type[8] = "A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";
//------------------------------
//--> show msg error.
$status_code = $_FILES["uploadfile"]["error"];
if($status_code != 0){
    echo $error_type[$status_code];
    exit;
}


0

সময়ের সীমাটি সত্যই বাড়ানোর জন্য আমি প্রথমে বর্তমান মান পেতে পছন্দ করি। set_time_limitসর্বদা সময় সীমা বৃদ্ধি করা হয় না। বর্তমান মান যদি (বর্তমান php.iniবা পূর্বনির্ধারিত সেট) বর্তমান কলে ব্যবহৃত মানের চেয়ে বেশি হয় set_time_limit, তবে সময় সীমা হ্রাস পাবে !

সুতরাং এই মত একটি ছোট সহায়ক সঙ্গে কি?

/**
 * @param int $seconds Time in seconds
 * @return bool
 */
function increase_time_limit(int $seconds): bool
{
    return set_time_limit(max(
        ini_get('max_execution_time'), $seconds
    ));
}

// somewhere else in your code
increase_time_limit(180);

আরও দেখুন: পিএইচপি স্ক্রিপ্টে সর্বাধিক_অ্যাক্সিউশন_টাইম পান

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