nodejs服务后台持续运行三种方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs服务后台持续运行三种方法相关的知识,希望对你有一定的参考价值。
参考技术A forever是一个nodejs守护进程,完全由命令行操控。forever会监控nodejs服务,并在服务挂掉后进行重启。1、安装 forever
npm install forever -g
2、启动服务
service forever start
3、使用 forever 启动 js 文件
forever start index.js
4、停止 js 文件
forever stop index.js
5、启动js文件并输出日志文件
forever start -l forever.log -o out.log -e err.log index.js
6、重启js文件
forever restart index.js
7、查看正在运行的进程
forever list
pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能
npm install -g pm2
pm2 start app.js // 启动
pm2 start app.js-i max //启动 使用所有CPU核心的集群
pm2 stop app.js // 停止
pm2 stop all // 停止所有
pm2 restart app.js // 重启
pm2 restart all // 重启所有
pm2 delete app.js // 关闭
运行 pm2 startup ,即在/etc/init.d/目录下生成pm2-root的启动脚本,且自动将pm2-root设为服务。
运行 pm2 save ,会将当前pm2所运行的应用保存在/root/.pm2/dump.pm2下,当开机重启时,运行pm2-root服务脚本,并且到/root/.pm2/dump.pm2下读取应用并启动。
nodejs 自带node.js自带服务nohub,不需要安装别的包。
缺点:存在无法查询日志等问题,关闭终端后服务也就关闭了, 经测试是这样的。
nohup node ***.js &
ios后台程序持续运行方法
iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验。但是有很多社交类的软件,如果因为它在后台就不能刷新到新的数据的话,那么这回影响到用户的体验,下面是将程序退到后台后可以继续运行儿不被系统清除的方法。
在appdelegate中
- (void)applicationDidEnterBackground:(UIApplication *)application{
UIBackgroundTaskIdentifier ID=[application beginBackgroundTaskWithExpirationHandler:^{
//当后台任务结束时调用
[application endBackgroundTask:ID];
} 这个函数是在程序进入后台的时候调用,我们在这个函数中先开启一个后台任务 只不过它的时间不确定, 优先级比较低 , 如果系统内存不够的话,就要被关闭了
当这一步失效后,就要使出杀手锏了,苹果系统关于后台程序的优先级有着明确的划分,如果你在播放音乐的话,那么你的优先级很高,系统一般不会清除;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
// 在真机上后台播放音乐,需要设置音频会话
AVAudioSession *session=[AVAudioSession sharedInstance]; //这是个单例模式,全局都可以使用
//设置会话类型(后台播放)
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
//激活
[session setActive:YES error:nil];
}
// 即将失去焦点的时候
- (void)applicationWillResignActive:(UIApplication *)application {
NSURL *url=[[NSBundle mainBundle]URLForResource:@"aaa.mp3" withExtension:nil]; //aaa.mp3是一首无声的音乐
AVAudioPlayer *player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
[player prepareToPlay];
//一直循环播放
player.numberOfLoops=-1;
[player play];
_player=player;
}
使用以上两步就可以成功的欺骗苹果系统,咱们的程序就可以一直在后台运行。
以上是关于nodejs服务后台持续运行三种方法的主要内容,如果未能解决你的问题,请参考以下文章