where('status', 1) ->distinct() ->get() ->toArray(); foreach ($aConditions as $row) { $sCondition = $row['cron_condition']; if (eval("return $sCondition;")) { $aArticle = Article::where("cron_condition", $sCondition)->where("status", 1)->get()->toArray(); $this->run($aArticle); } } } private function run($aArticle) { foreach ($aArticle as $row) { $this->sUserName = $row["user_name"]; $this->sProjectName = $row["project_name"]; list($sClass, $sFunc) = explode('#', $row['mod']); $sClass = "App\\Services\\Github\\File\\".$sClass; if (method_exists($sClass, $sFunc)) { $oInstans = new $sClass(); $sReadMe = $oInstans->$sFunc($row); // var_dump($sReadMe); } else { // 处理方法不存在的情况(可选) // $this->tgMessage("Method $sClass does not exist."); } // 目录 $sBaseDir = env("BASE_DIR"); $sUserProjectDir = $sBaseDir."github/".$this->sUserName."-".$this->sProjectName; $sGitShDir = $sBaseDir."github"; // 没有文件夹,创建一个 if (!is_dir($sUserProjectDir)) { mkdir($sUserProjectDir, 0755, true); // 0755 是权限,true 表示递归创建目录 $output = shell_exec("git config --global --add safe.directory $sUserProjectDir 2>&1"); } // 没有仓库,创建一个 if (!is_dir($sUserProjectDir . "/.git")) { $sGithubProjectUrl = env("github_url_base").":".$this->sUserName."/".$this->sProjectName.".git"; $output = shell_exec("sh " . $sGitShDir . "/init.sh " . escapeshellarg($sUserProjectDir) . " " . escapeshellarg($sGithubProjectUrl)); echo "Output from init.sh:\n$output\n"; } // 写入内容 file_put_contents($sUserProjectDir."/README.md", $this->formatstr($sReadMe)); file_put_contents($sUserProjectDir."/version.text", time()); // 提交 $output = shell_exec("sh ".$sGitShDir."/push.sh " . escapeshellarg($sUserProjectDir)); echo "Output from push.sh:\n$output\n"; } } private function tgMessage($sMsg) { if (env("is_loc") == true) { echo $sMsg; } else { echo 11; } } private function formatstr($str) { $str = substr($str, 1, -1); return $str; } }