浏览代码

Merge branch 'dev'

luolongfei 3 年之前
父节点
当前提交
ba9a313e89
共有 4 个文件被更改,包括 84 次插入44 次删除
  1. 4 3
      app/helpers.php
  2. 26 27
      index.php
  3. 1 1
      libs/Env.php
  4. 53 13
      run

+ 4 - 3
app/helpers.php

@@ -234,10 +234,11 @@ if (!function_exists('system_check')) {
             throw new LlfException(34520006);
         }
 
-        // 如果是在腾讯云函数部署,则不需要检查这几项
+        // 如果是在云函数部署,则不需要检查这几项
         if (IS_SCF) {
-            system_log('检测到运行环境为腾讯云函数,所有环境变量将直接从环境中读取,如果 .env 文件存在的话,则优先使用 .env 文件中的环境变量');
-            system_log('在腾讯云函数,可以参考此处修改或新增环境变量,无需重建:https://github.com/luolongfei/freenom/blob/main/resources/screenshot/scf_env_modify.png');
+            system_log('检测到运行环境为云函数,所有环境变量将直接从环境中读取,环境中找不到的变量,则直接从 .env.example 文件中读取');
+            system_log('如果是在腾讯云函数,可以参考此处修改或新增环境变量,无需重建:https://github.com/luolongfei/freenom/blob/main/resources/screenshot/scf_env_modify.png');
+            system_log('如果是在阿里云函数,可以直接在【函数详情】->【函数配置】->【环境信息】处编辑环境变量');
         } else {
             if (!function_exists('putenv')) {
                 throw new LlfException(34520005);

+ 26 - 27
index.php

@@ -2,11 +2,10 @@
 /**
  * 入口文件
  *
- * 腾讯云函数版本维护:
+ * 云函数版本维护:
  * 1、去掉顶部的 “#!/usr/bin/env php”,将文件名改为 index.php
  * 2、将 “define('IS_SCF', false);” 改为 “define('IS_SCF', true);”
- * 3、使用 function main_handler($event, $context) {} 将下面的 try catch 部分包起来,
- *    并在 try 最后一行追加 “return '云函数执行成功。';”,在 main_handler 函数的最后一行追加 “return '云函数执行失败。';”
+ * 3、干掉最下方的 run(); 调用
  *
  * @author mybsdc <[email protected]>
  * @date 2019/3/2
@@ -18,13 +17,13 @@ error_reporting(E_ERROR);
 ini_set('display_errors', 1);
 set_time_limit(0);
 
-define('IS_SCF', true); // 是否腾讯云函数环境
+define('IS_SCF', false); // 是否云函数环境
 define('IS_CLI', PHP_SAPI === 'cli');
 define('DS', DIRECTORY_SEPARATOR);
 define('ROOT_PATH', realpath(__DIR__));
 define('VENDOR_PATH', realpath(ROOT_PATH . '/vendor'));
 define('APP_PATH', realpath(ROOT_PATH . '/app'));
-define('DATA_PATH', IS_SCF ? '/tmp' : realpath(ROOT_PATH . '/app/Data')); // 腾讯云函数只有 /tmp 目录的读写权限
+define('DATA_PATH', IS_SCF ? '/tmp' : realpath(ROOT_PATH . '/app/Data')); // 云函数只有 /tmp 目录的读写权限
 define('RESOURCES_PATH', realpath(ROOT_PATH . '/resources'));
 
 date_default_timezone_set('Asia/Shanghai');
@@ -66,28 +65,6 @@ function exception_handler($e)
     Message::send("具体的异常内容是:\n" . $e->getMessage(), '主人,未捕获的异常');
 }
 
-/**
- * @return string
- */
-function run()
-{
-    try {
-        system_check();
-
-        $class = sprintf('Luolongfei\App\Console\%s', get_argv('c', 'FreeNom'));
-        $fn = get_argv('m', 'handle');
-
-        $class::getInstance()->$fn();
-
-        return '云函数执行成功。';
-    } catch (\Exception $e) {
-        system_log(sprintf('执行出错:<red>%s</red>', $e->getMessage()), $e->getTrace());
-        Message::send("执行出错:\n" . $e->getMessage(), '主人,捕获异常');
-    }
-
-    return '云函数执行失败。';
-}
-
 /**
  * 腾讯云函数
  *
@@ -116,3 +93,25 @@ function handler($event, $context)
 
     return run();
 }
+
+/**
+ * @return string|bool
+ */
+function run()
+{
+    try {
+        system_check();
+
+        $class = sprintf('Luolongfei\App\Console\%s', get_argv('c', 'FreeNom'));
+        $fn = get_argv('m', 'handle');
+
+        $class::getInstance()->$fn();
+
+        return IS_SCF ? '云函数执行成功。' : true;
+    } catch (\Exception $e) {
+        system_log(sprintf('执行出错:<red>%s</red>', $e->getMessage()), $e->getTrace());
+        Message::send("执行出错:\n" . $e->getMessage(), '主人,捕获异常');
+    }
+
+    return IS_SCF ? '云函数执行失败。' : false;
+}

+ 1 - 1
libs/Env.php

@@ -22,7 +22,7 @@ class Env extends Base
     {
         if (file_exists(ROOT_PATH . DS . $fileName)) {
             $this->allValues = $overload ? Dotenv::create(ROOT_PATH, $fileName)->overload() : Dotenv::create(ROOT_PATH, $fileName)->load();
-        } else if (IS_SCF) { // 腾讯云函数直接从 .env.example 读取默认环境变量
+        } else if (IS_SCF) { // 云函数直接从 .env.example 读取默认环境变量
             $fileName = '.env.example';
             if (file_exists(ROOT_PATH . DS . $fileName)) {
                 $this->allValues = $overload ? Dotenv::create(ROOT_PATH, $fileName)->overload() : Dotenv::create(ROOT_PATH, $fileName)->load();

+ 53 - 13
run

@@ -3,11 +3,10 @@
 /**
  * 入口文件
  *
- * 腾讯云函数版本维护:
+ * 云函数版本维护:
  * 1、去掉顶部的 “#!/usr/bin/env php”,将文件名改为 index.php
  * 2、将 “define('IS_SCF', false);” 改为 “define('IS_SCF', true);”
- * 3、使用 function main_handler($event, $context) {} 将下面的 try catch 部分包起来,
- *    并在 try 最后一行追加 “return '云函数执行成功。';”,在 main_handler 函数的最后一行追加 “return '云函数执行失败。';”
+ * 3、干掉最下方的 run(); 调用
  *
  * @author mybsdc <[email protected]>
  * @date 2019/3/2
@@ -19,13 +18,13 @@ error_reporting(E_ERROR);
 ini_set('display_errors', 1);
 set_time_limit(0);
 
-define('IS_SCF', false); // 是否腾讯云函数环境
+define('IS_SCF', false); // 是否云函数环境
 define('IS_CLI', PHP_SAPI === 'cli');
 define('DS', DIRECTORY_SEPARATOR);
 define('ROOT_PATH', realpath(__DIR__));
 define('VENDOR_PATH', realpath(ROOT_PATH . '/vendor'));
 define('APP_PATH', realpath(ROOT_PATH . '/app'));
-define('DATA_PATH', IS_SCF ? '/tmp' : realpath(ROOT_PATH . '/app/Data')); // 腾讯云函数只有 /tmp 目录的读写权限
+define('DATA_PATH', IS_SCF ? '/tmp' : realpath(ROOT_PATH . '/app/Data')); // 云函数只有 /tmp 目录的读写权限
 define('RESOURCES_PATH', realpath(ROOT_PATH . '/resources'));
 
 date_default_timezone_set('Asia/Shanghai');
@@ -67,14 +66,55 @@ function exception_handler($e)
     Message::send("具体的异常内容是:\n" . $e->getMessage(), '主人,未捕获的异常');
 }
 
-try {
-    system_check();
+/**
+ * 腾讯云函数
+ *
+ * @param $event
+ * @param $context
+ *
+ * @return string
+ */
+function main_handler($event, $context)
+{
+    return run();
+}
+
+/**
+ * 阿里云函数
+ *
+ * @param $event
+ * @param $context
+ *
+ * @return string
+ */
+function handler($event, $context)
+{
+    $logger = $GLOBALS['fcLogger'];
+    $logger->info('开始执行阿里云函数');
+
+    return run();
+}
 
-    $class = sprintf('Luolongfei\App\Console\%s', get_argv('c', 'FreeNom'));
-    $fn = get_argv('m', 'handle');
+/**
+ * @return string|bool
+ */
+function run()
+{
+    try {
+        system_check();
 
-    $class::getInstance()->$fn();
-} catch (\Exception $e) {
-    system_log(sprintf('执行出错:<red>%s</red>', $e->getMessage()), $e->getTrace());
-    Message::send("执行出错:\n" . $e->getMessage(), '主人,捕获异常');
+        $class = sprintf('Luolongfei\App\Console\%s', get_argv('c', 'FreeNom'));
+        $fn = get_argv('m', 'handle');
+
+        $class::getInstance()->$fn();
+
+        return IS_SCF ? '云函数执行成功。' : true;
+    } catch (\Exception $e) {
+        system_log(sprintf('执行出错:<red>%s</red>', $e->getMessage()), $e->getTrace());
+        Message::send("执行出错:\n" . $e->getMessage(), '主人,捕获异常');
+    }
+
+    return IS_SCF ? '云函数执行失败。' : false;
 }
+
+run();