トランザクションのタイムアウトを増やす方法は?動画をアップロードしたいのですが、大きなサイズの動画がアップロードされていませんか?
エラーが発生します The process *** exceeded the timeout of 60 seconds.
トランザクションのタイムアウトを増やす方法は?動画をアップロードしたいのですが、大きなサイズの動画がアップロードされていませんか?
エラーが発生します The process *** exceeded the timeout of 60 seconds.
回答:
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
PHP.iniが配置されているかどうかは、環境によって異なります。詳細:http ://php.net/manual/en/ini.list.php
ランタイム中にも使用できるようにする必要があります
set_time_limit(100);
http://php.net/manual/en/function.set-time-limit.php
またはあなたのvhost-config
php_admin_value max_execution_time 10000
LOWであるグローバル実行時間制限を設定することは、信頼性がそれほど高くないアプリケーションのパフォーマンス上の理由から、ほとんどの場合良いアイデアです。したがって、これらのスクリプトを絶対に必要な時間より長く実行できるようにしたい場合があります。
ps:post_max_sizeとupload_max_filesizeを忘れないでください(最初の回答がすでに伝えたように)
ハンネスの答えを完成させる。
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がどこにあるかわからない場合。サーバーでファイル「name.php」を実行して、次のように配置できます。
<?php phpinfo(); ?>
そして、あなたのウェブサイトで、あなたはあなたのphp.iniの設定を見ることができ、それはそれがどこにあるかマークされています。
php.iniにアクセスできない場合は、さらに2つのオプションがあります。
この行を「name.php」ファイルに直接設定できますが、このオプションのupload_max_filesizeが見つかりません。
set_time_limit(0);
または「.htaccess」
php_value upload_max_filesize 0
php_value max_execution_time 0
あなたがする必要があるのが1つまたは2つのページだけに固有である場合、アプリケーション全体に影響を与えないように、set_time_limitを使用することをお勧めします。
set_time_limit(some_values);
もちろん、これらの2つの値(post_max_sizeとupload_max_filesize)は調査の対象です。
ini_set関数で設定することもできます
ini_set('post_max_size','20M');
ini_set('upload_max_filesize','2M');
または直接、Hannesによる上記の応答のようなphp.iniファイル、または以下のようにiin .htaccessに設定します
php_value upload_max_filesize 2M
php_value post_max_size 20M
上記の回答に加えて、set_time_limit()関数を使用できます。
http://php.net/manual/en/function.set-time-limit.php
0引数として渡すと、スクリプトは時間制限なしで実行されます。
たまたまMicrosoft IISサーバーを使用している場合は、他の人が述べたphp.ini設定に加えて、IISサーバーマネージャーでPHP FastCGIアプリケーションの実行タイムアウト設定を増やす必要がある場合があります。
ステップ1)IISサーバーマネージャーを開きます(通常、[スタート]メニューの[ サーバーマネージャー ]の下にある[ ツール] / [ インターネットインフォメーションサービス(IIS)マネージャー])。
ステップ2)(特定のドメインに固有ではない)メイン接続をクリックします。
ステップ3)IISセクションの下で、FastCGI設定を見つけます(以下を参照)。
ステップ4)ここで、PHPアプリケーションを右クリックし、[ 編集... ]を選択します。
ステップ5)タイムアウトを確認します(以下を参照)。
私の場合、デフォルトのタイムアウトは70秒と90秒でした。前者が原因で、70秒以上かかるPHPスクリプトで500内部サーバーエラーが発生していました。
PHPタイムアウトについて具体的に質問しているのは承知していますが、他に誰も言及していないように見えるのは、Webサーバーにもタイムアウトがあり、PHPタイムアウトと非常によく似ていることです。
だからあなたが試した場合:
そして、phpinfo()関数でmax_execution_timeが実際に増加していることを確認した後、これを.htaccessに追加して、Apache自体がタイムアウトしないようにすることができます。
RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]
詳細はこちら:https : //www.antropy.co.uk/blog/php-script-keeps-timing-out-despite-ini-set/
まず、php.iniファイルのパスをで確認しますphpinfo()。そして、PHP.INIパラメータを変更しました:
upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30
Apacheを再起動しました
set_time_limit(0); // safe_mode is off
ini_set('max_execution_time', 500); //500 seconds
注:コマンドを使用php.iniしてLinuxで検索することもできます
locate `php.ini`
(サーバーなどで)php.iniを編集できない場合は、phpコード内からphp.iniパラメータの変更を試みることができます。試してください:
ini_set('max_execution_time', 'NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');
それでもうまくいかない場合は、同じように「set_time_limit」を設定してみてください。それ以外は、ホストに連絡することしか選択肢がないと思います。これらの設定は、セーフモードでは変更できません。
オプション:php.iniの設定を設定してもアップロードできない場合
-これはエラーコードをチェックするphp関数です
$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;
}
時間制限を本当に増やすには、まず現在の値を取得することをお勧めします。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);