Begin

想把之前的体育日记生成的Python脚本部署到线上,一开始想用Java,发现一头雾水啊,改用PHP,前端用的 bootstrap

  • 把Python脚本改为接收参数

    una = sys.argv[1]
    uno = sys.argv[2]
    ute = sys.argv[3]
    usex = sys.argv[4]
  • PHP根据用户表单输入构造命令
  • 使用 shell_exec($cmd);来执行Python脚本
  • zip命令打包

    // 这个函数是在网上查到的,找不到出处了
    // 避免同一个学号多次使用而重复
    function getRandomStr($len, $special=true){
      $chars = array(
          "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
          "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
          "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
          "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
          "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
          "3", "4", "5", "6", "7", "8", "9"
      );
    
      if($special){
          $chars = array_merge($chars, array(
              "!", "@", "#", "$", "?", "|", "{", "/", ":", ";",
              "%", "^", "&", "*", "(", ")", "-", "_", "[", "]",
              "}", "<", ">", "~", "+", "=", ",", "."
          ));
      }
    
      $charsLen = count($chars) - 1;
      shuffle($chars);                            //打乱数组顺序
      $str = '';
      for($i=0; $i<$len; $i++){
          $str .= $chars[mt_rand(0, $charsLen)];    //随机取出一位
      }
      return $str;
    }
    
    $ran = $uno.getRandomStr(5, false).'.zip';
    $zipcmd = 'zip -q -r '.$ran.' '.$uno;
    shell_exec($zipcmd);

使用 shell_exec注意

  1. 如果 php.ini中配置了使用安全模式,则无法使用。
  2. 如果 php.ini中禁用的了该函数,也无法使用

效果




扫一扫在手机打开当前页