LeonLee
- LeonLee 发布了源码Yii2 后台脚本管理
写得不错哦,加油!
- LeonLee 赞了评论
我当时考虑了以下一些情况,有哪些没考虑到的情况麻烦大家指出:
- 主进程被意外关闭,或者意外关机。
解决方法: 把主进程放到crontab里,隔一段时间调用一次(根据脚本的重要性设置时间长短)。这样即使进程突然挂了,过一段时间也会自动重启。机器挂了,在重启时也会自动启动。(当然,如果服务器挂了还没立即检测到并重启,那就该找运维同学谈谈心了.) - 同一脚本被同时(并发)调用,或者脚本在执行时,又有另一个进程来调用。
解决方法: 在启动脚本的时候,检查内存中是否有该脚本的进程,如有就不调用,避免并发引起问题。
当然,如果希望并发,可以考虑使用多线程的方法。不过不太建议使用PHP做多线程。 - 一个脚本执行时间过长,有可能造成资源死锁
解决方法:设置脚本最大执行时间,如果主进程扫描到某脚本执行超时,则强制杀掉该进程。 - 如何知道脚本的执行情况,是成功还是失败。
解决方法:在控制器里封装了公共的日志记录方法,脚本里可以打印一些关键信息到该日志里,然后脚本在执行完成后应该返回true/false告知主进程是否调用成功。所有的日志都记录在数据库里,方便查询。 - 针对不同类型脚本执行失败情况的考虑
无固定解决方法,根据实际业务决定不同类型脚本是否需要失败重试以及重试次数。甚至可以自己加入监控,脚本失败时发邮件或通知。
- 主进程被意外关闭,或者意外关机。
- LeonLee 评论了源码 Yii2 后台脚本管理系统
我当时考虑了以下一些情况,有哪些没考虑到的情况麻烦大家指出:
- 主进程被意外关闭,或者意外关机。
解决方法: 把主进程放到crontab里,隔一段时间调用一次(根据脚本的重要性设置时间长短)。这样即使进程突然挂了,过一段时间也会自动重启。机器挂了,在重启时也会自动启动。(当然,如果服务器挂了还没立即检测到并重启,那就该找运维同学谈谈心了.) - 同一脚本被同时(并发)调用,或者脚本在执行时,又有另一个进程来调用。
解决方法: 在启动脚本的时候,检查内存中是否有该脚本的进程,如有就不调用,避免并发引起问题。
当然,如果希望并发,可以考虑使用多线程的方法。不过不太建议使用PHP做多线程。 - 一个脚本执行时间过长,有可能造成资源死锁
解决方法:设置脚本最大执行时间,如果主进程扫描到某脚本执行超时,则强制杀掉该进程。 - 如何知道脚本的执行情况,是成功还是失败。
解决方法:在控制器里封装了公共的日志记录方法,脚本里可以打印一些关键信息到该日志里,然后脚本在执行完成后应该返回true/false告知主进程是否调用成功。所有的日志都记录在数据库里,方便查询。 - 针对不同类型脚本执行失败情况的考虑
无固定解决方法,根据实际业务决定不同类型脚本是否需要失败重试以及重试次数。甚至可以自己加入监控,脚本失败时发邮件或通知。
- 主进程被意外关闭,或者意外关机。
- LeonLee 赞了源码Yii2 后台脚本管理系统
- LeonLee 2016-08-17 已签到连续签到1天,获得了5个金钱
- LeonLee 发布了源码Yii2 后台脚本管理系统