public static function locked($lockName,$expire=10,$connection='default'){
    /** @var  $redis  Redis */
    $redis = Redis::connection($connection);
    $key = 'LOCK:'.$lockName;

    $re = $redis->setnx($key,1);
    if($re){
        $redis->expire($key,$expire);
        return false;
    }else{
        return true;
    }
}

function execute_cmd($commander, $workDir = '', $isBack = true)
{
    $result = '';
    if (empty($commander)) {
        return $result;
    }
    if (!defined('FLUTTER_HOME')) {
        define('FLUTTER_HOME', '/data/app/flutter');
    }
    if (!defined('ANDROID_HOME')) {
        define('ANDROID_HOME', '/opt/android/');
    }
    if (!defined('JAVA_HOME')) {
        define('JAVA_HOME', '/usr/local/jdk1.8.0_152/');
    }
    if (!defined('CLASSPATH')) {
        define('CLASSPATH', '.:' . JAVA_HOME . '/lib:' . JAVA_HOME . '/lib/dt.jar:' . JAVA_HOME . '/lib/tools.jar:' . JAVA_HOME . '/bin');
    }
    if (!defined('PATH_HOME')) {
        define('PATH_HOME', '.:/root/');
    }
    if (!defined('PATH')) {
        define('PATH', '.:/bin/:/sbin/:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/sbin');
    }

    putenv('FLUTTER_HOME=' . FLUTTER_HOME);
    putenv('JAVA_HOME=' . JAVA_HOME);
    putenv('ANDROID_HOME=' . ANDROID_HOME);
    putenv('CLASSPATH=' . CLASSPATH);
    putenv('HOME=' . PATH_HOME);
    putenv('PATH=' . PATH);
    putenv('LC_ALL=en_US.UTF8');
    putenv('LANG=en_US.UTF8');
    umask(0022);

    if ((!empty($workDir)) and is_dir($workDir)) {
        //print "changeDir: $workDir\n";
        chdir($workDir);
    }

    //print "Cmd: $commander\n";

    if ($isBack) {
        $commander .= ' 2>&1';
    }

    if (function_exists('exec')) {
        @exec($commander, $result);
        $result = join("\n", $result);
    } elseif (function_exists('shell_exec')) {
        $result = @shell_exec($commander);
    } elseif (function_exists('system')) {
        @ob_start();
        @system($commander);
        $result = @ob_get_contents();
        @ob_end_clean();
    } elseif (function_exists('passthru')) {
        @ob_start();
        @passthru($commander);
        $result = @ob_get_contents();
        @ob_end_clean();
    } elseif (@is_resource($f = @popen($commander, "r"))) {
        $result = '';
        while (!@feof($f)) {
            $result .= @fread($f, 1024);
        }
        @pclose($f);
    }

    return trim($result);
}