Esempio n. 1
0
 private function pakIos($channel, $invite, $c)
 {
     if (!empty($channel)) {
         $path = "../package/";
         if (!file_exists($path)) {
             //mkdir("$path", 0700);
         }
         $ipaUrl = _PAK_IOS_IP_ . "/pack.php?channel={$channel}&c={$c}";
         if (!empty($invite)) {
             $ipaUrl .= "&code={$invite}";
         }
         $sql = "SELECT sys_value from z_sys_conf WHERE sys_key = 'ios_version_zaibei'";
         $versionRe['version'] = $this->versionModel->query($sql)[0]['sys_value'];
         if (empty($versionRe['version'])) {
             return array('status' => -1, 'error' => '版本号无法获取');
         }
         $ipaName = $this->pakName($channel, $invite, $c) . "_" . trim($versionRe['version']) . ".ipa";
         $plistName = $this->pakName($channel, $invite, $c) . ".plist";
         //生成plist文件
         $plistContent = $this->iosTem($ipaName, trim($versionRe['version']));
         $isWrite = $this->wPlistfile($plistName, $plistContent);
         if (!$isWrite) {
             return array('status' => -2, 'error' => 'plist文件生成失败');
         }
         $plistUrl = 'https://www.hongbaosuoping.com/plist/' . $plistName;
         // how it works
         if (file_exists($path . $ipaName)) {
             return array('status' => 1, 'error' => '成功', "url" => $plistUrl);
         }
         //生成ipa包
         $packName = $path . $ipaName;
         $headerFile = 'headerFile';
         exec("wget --server-response -O {$packName}  -o {$headerFile} '{$ipaUrl}'");
         // 获取ipa包
         $file_size = $this->getContentLengthFromHeaderFile($headerFile);
         curl_short(_DOMAIN_ . "/cron/ipa_all/checkCDN?ipaName={$ipaName}&invite={$invite}&channel={$channel}");
         // 异步访问 chackcdn链接, 改变打包状态
         //判断远程文件是否已存在
         if (!file_get_contents($plistUrl)) {
             return array('status' => -3, 'error' => '无法获取plist文件');
         }
         return array('status' => 1, 'error' => '成功', "url" => $plistUrl);
     }
     return array('status' => 0, 'error' => '打包失败');
 }
Esempio n. 2
0
 private function pakIos($channel, $invite, $c)
 {
     if (!empty($channel)) {
         $path = "../package/";
         if (!file_exists($path)) {
             //mkdir("$path", 0700);
         }
         $ipaUrl = _PAK_IOS_IP_ . "/pack.php?channel={$channel}&c={$c}";
         if (!empty($invite)) {
             $ipaUrl .= "&code={$invite}";
         }
         //            $versionRe = $this->versionModel->getIosVersion();
         $sql = "SELECT sys_value from z_sys_conf WHERE sys_key = 'ios_version_zaibei'";
         $versionRe['version'] = $this->versionModel->query($sql)[0]['sys_value'];
         if (empty($versionRe['version'])) {
             return array('status' => -1, 'error' => '版本号无法获取');
         }
         $ipaName = $this->pakName($channel, $invite, $c) . "_" . trim($versionRe['version']) . ".ipa";
         $plistName = $this->pakName($channel, $invite, $c) . ".plist";
         //生成plist文件
         $plistContent = $this->iosTem($ipaName, trim($versionRe['version']));
         $isWrite = $this->wPlistfile($plistName, $plistContent);
         if (!$isWrite) {
             return array('status' => -2, 'error' => 'plist文件生成失败');
         }
         if (file_exists($path . $ipaName)) {
             @unlink($path . $ipaName);
         }
         //生成ipa包
         $packName = $path . $ipaName;
         $headerFile = 'headerFile';
         exec("wget --server-response -O {$packName}  -o {$headerFile} '{$ipaUrl}'");
         // 获取ipa包
         $file_size = $this->getContentLengthFromHeaderFile($headerFile);
         if (file_exists($path . $ipaName) and filesize($path . $ipaName) > 4000000 and filesize($path . $ipaName) < 9000000) {
             $sql = "UPDATE a_package_log SET status = 1 WHERE uid = '{$invite}' AND channel like '{$channel}%' AND pk_os = 2;";
             // 本地包正常
             $this->versionModel->query($sql);
         } else {
             $sql = "UPDATE a_package_log SET status = -1 WHERE uid = '{$invite}' AND channel like '{$channel}%' AND pk_os = 2;";
             // 本地包异常
             $this->versionModel->query($sql);
         }
         if ($file_size < 4000000 or $file_size > 9000000) {
             $sql = "UPDATE a_package_log SET status = -2 WHERE uid = '{$invite}' AND channel like '{$channel}%' AND pk_os = 2;";
             // 获取包异常
             $this->versionModel->query($sql);
         }
         curl_short(_DOMAIN_ . "/cron/ipa_all/checkCDN?ipaName={$ipaName}&invite={$invite}&channel={$channel}");
         // 异步访问 chackcdn链接, 改变打包状态
         //            $ipaName = "dfdsf_pack";
         if (app()->user->getId() == 1) {
             echo 'sql : ';
             var_dump("UPDATE a_package_log SET status = 1 WHERE uid = '{$invite}' AND channel like '{$channel}%' AND pk_os = 2;");
             echo '<br>';
             echo 'filename : ';
             var_dump($path . $ipaName);
             echo '<br>';
             echo 'filesize : ';
             var_dump(filesize($path . $ipaName));
             echo '<br>';
             echo 'ipaUrl :';
             var_dump($ipaUrl);
             echo '<br>';
             echo 'checkCDN :';
             var_dump(_DOMAIN_ . "/cron/ipa_all/checkCDN?ipaName={$ipaName}&invite={$invite}&channel={$channel}");
             echo '<br>';
             echo 'response_header size:';
             var_dump($file_size);
         }
         //判断远程文件是否已存在
         $plistUrl = 'https://www.hongbaosuoping.com/plist/' . $plistName;
         // how it works
         if (!file_get_contents($plistUrl)) {
             return array('status' => -3, 'error' => '无法获取plist文件');
         }
         return array('status' => 1, 'error' => '成功', "url" => $plistUrl);
     }
     return array('status' => 0, 'error' => '打包失败');
 }