开发中需求是后台自动上传代码,所以使用node.js进行代码上传,使用PHP的exec进行命令行控制,但是使用过程中出现cpu达到100%的情况;
代码如下
// node.js
const ci = require('/目录/miniprogram-ci');
let data = process.argv[2];
data = JSON.parse(data);
if(!data) return;
let appid = data.a;
let projectPath = '/目录/' + data.p;
let uploadKey = `/目录/key/private.${appid}.key`;
let desc = new Date() + data.d;
let version = data.v;
// 创建项目对象
const project = new ci.Project({
appid, // 小程序appid
type: 'miniProgram', // 类型,小程序或小游戏
projectPath: projectPath, // 项目路径
privateKeyPath: uploadKey, // 密钥路径
ignores: ['node_modules/**/*'], // 忽略的文件
});
// 调用上传方法
ci.upload({
project,
version,
desc,
setting: {
es6: true, // 是否 "es6 转 es5"
minify: true, // 是否压缩代码
},
}).then(res => {
console.log('成功')
}).catch(error => {
if (error.errCode == -1) {
console.log('上传成功')
}
console.log('上传失败');
process.exit(-1)
});
PHP代码如下:
foreach($data_id as $v){
if(!empty($v)){
$oa_appid = DB::table('名称')->where('id',$v)->value('appid');
$idStr = PHP_EOL . 'id:' . $v;
if(empty($oa_appid)){
$fail_str .= $idStr . '字符串太长';
continue;
}
$applet_data['v'] = $data['vision'];//版本号
$applet_data['d'] = $data['desc'];//备注
$applet_data['a'] = $oa_appid;//appid
$applet_data['p'] = $data['path'];//上传路径(路径不可随意填写)
$json_data = json_encode($applet_data);
$str_lenth = strlen($json_data);
if($str_lenth > 70){
$fail_str .= $idStr . '字符串太长';
continue;
}
$res = exec('node /目录/node.js ' . escapeshellarg($json_data),$node_res);// 2>&1
if($res == '成功'){
$suc_str .= $idStr . '成功';
} else {
$fail_str .= $idStr . '上传失败';
$path = public_path() . '/目录/' . date('Y-m-d') . 'log';
file_put_contents($node_res,$path,FILE_APPEND);
}
}
}
有没有大佬救救孩子啊,我是用的laraavel框架
node没有进行任何配置,安装好后就没有进行更改