PHP:undo set_time_limit?

私は、実行に時間がかかることがわかっている機能を持っています。したがって、私は関数の初めにこれをしたい:

set_time_limit(0);

私がこの機能を使い終わったら、時間制限は元々のものに戻されますか?それとも元々のものに戻すべきでしょうか?もしそうなら、元の最大実行時間をどのように取得するのですか?

1

2 答え

機能を離れるときに値はリセットされません。あなたはini_getを使ってオリジナルを読むことができますが、適切な動作を得ることは自明ではありません。 http://php.net/set_time_limit

set_time_limit()を呼び出すと、タイムアウトカウンタがゼロから再開します。つまり、タイムアウトがデフォルトの30秒で、スクリプトの実行にset_time_limit(20)などの呼び出しが25秒行われた場合、スクリプトはタイムアウトするまでに合計45秒間実行されます。

0
追加された

http://www.php.net/manual/ en/function.get-cfg-var.php またはこのようなクラス:

class TempIniValues {

    private $original_settings = array();

    public function __construct($var_name, $value) {
        $this->set($var_name, $value);
    }

    public function set($var_name, $value) {
        $this->original_settings[$var_name] = ini_get($var_name);
        ini_set($var_name, $value);
    }

    public function get($var_name, $if_orig=false) {
        return $if_orig?$this->get_orig($var_name):ini_get($var_name);
    }

    public function get_orig($var_name) {
        return isset($this->original_settings[$var_name])?$this->original_settings[$var_name]:NULL;
    }

    public function __destruct() {
        foreach($this->original_settings AS $setting_name => $setting_value) {
            ini_set($setting_name,$setting_value);
        }
    }

}


function test() {
    var_dump(ini_get('max_execution_time'));
    $temp_ini=new TempIniValues('max_execution_time',42);
    var_dump(ini_get('max_execution_time'));
}

var_dump(ini_get('max_execution_time'));
test();
var_dump(ini_get('max_execution_time'));
0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com