feat: PHP 运行环境,限制 Openresty 版本 (#611)

pull/613/head
zhengkunwang223 2023-04-13 14:28:33 +08:00 committed by GitHub
parent 6115ffe0fc
commit d151e98fab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 57 additions and 1 deletions

View File

@ -1300,6 +1300,8 @@ const message = {
versionHelper: 'PHP version, e.g. v8.0', versionHelper: 'PHP version, e.g. v8.0',
buildHelper: buildHelper:
'The more extensions you select, the more CPU will be occupied during the image making process, so avoid selecting all extensions', 'The more extensions you select, the more CPU will be occupied during the image making process, so avoid selecting all extensions',
openrestryWarn: 'PHP needs to be upgraded to OpenResty to version 1.21.4.1 or later to use',
toupgrade: 'To Upgrade',
}, },
}; };

View File

@ -1284,6 +1284,8 @@ const message = {
status: '', status: '',
versionHelper: 'PHP, v8.0', versionHelper: 'PHP, v8.0',
buildHelper: ' CPU ', buildHelper: ' CPU ',
openrestryWarn: 'PHP OpenResty 1.21.4.1 使',
toupgrade: '',
}, },
}; };
export default { export default {

View File

@ -8,7 +8,7 @@
}, },
]" ]"
/> />
<LayoutContent :title="$t('runtime.runtime')" v-loading="loading"> <LayoutContent :title="$t('runtime.runtime')" v-loading="loading" :class="{ mask: !versionExist }">
<template #toolbar> <template #toolbar>
<el-button type="primary" @click="openCreate"> <el-button type="primary" @click="openCreate">
{{ $t('runtime.create') }} {{ $t('runtime.create') }}
@ -65,6 +65,15 @@
</ComplexTable> </ComplexTable>
</template> </template>
</LayoutContent> </LayoutContent>
<el-card width="30%" v-if="!versionExist" class="mask-prompt">
<span>
{{ $t('runtime.openrestryWarn') }}
<span class="open-warn" @click="goRouter()">
<el-icon><Position /></el-icon>
{{ $t('runtime.toupgrade') }}
</span>
</span>
</el-card>
<CreateRuntime ref="createRef" @close="search" /> <CreateRuntime ref="createRef" @close="search" />
</div> </div>
</template> </template>
@ -81,6 +90,8 @@ import CreateRuntime from '@/views/website/runtime/create/index.vue';
import Status from '@/components/status/index.vue'; import Status from '@/components/status/index.vue';
import i18n from '@/lang'; import i18n from '@/lang';
import { useDeleteData } from '@/hooks/use-delete-data'; import { useDeleteData } from '@/hooks/use-delete-data';
import { CheckAppInstalled } from '@/api/modules/app';
import router from '@/routers';
const paginationConfig = reactive({ const paginationConfig = reactive({
currentPage: 1, currentPage: 1,
@ -111,6 +122,7 @@ const buttons = [
const loading = ref(false); const loading = ref(false);
const items = ref<Runtime.RuntimeDTO[]>([]); const items = ref<Runtime.RuntimeDTO[]>([]);
const createRef = ref(); const createRef = ref();
const versionExist = ref(false);
const search = async () => { const search = async () => {
req.page = paginationConfig.currentPage; req.page = paginationConfig.currentPage;
@ -139,11 +151,44 @@ const openDelete = async (row: Runtime.Runtime) => {
search(); search();
}; };
const onCheck = async () => {
try {
const res = await CheckAppInstalled('openresty');
if (res.data && res.data.version) {
if (compareVersions(res.data.version, '1.21.4')) {
versionExist.value = true;
}
}
} catch (error) {}
};
function compareVersions(version1: string, version2: string): boolean {
const v1 = version1.split('.');
const v2 = version2.split('.');
const len = Math.max(v1.length, v2.length);
for (let i = 0; i < len; i++) {
const num1 = parseInt(v1[i] || '0');
const num2 = parseInt(v2[i] || '0');
if (num1 !== num2) {
return num1 > num2 ? true : false;
}
}
return false;
}
const goRouter = async () => {
router.push({ name: 'AppUpgrade' });
};
onMounted(() => { onMounted(() => {
search(); search();
timer = setInterval(() => { timer = setInterval(() => {
search(); search();
}, 10000 * 3); }, 10000 * 3);
onCheck();
}); });
onUnmounted(() => { onUnmounted(() => {
@ -151,3 +196,10 @@ onUnmounted(() => {
timer = null; timer = null;
}); });
</script> </script>
<style lang="scss" scoped>
.open-warn {
color: $primary-color;
cursor: pointer;
}
</style>