问题描述:ubuntu下用lua开发游戏电子邮件模块,自己测试时向用户推送100封,而用户最多只能有50封。这是调用sysdelete删除一些邮件。当打印log时,打印到一半后程序中途停止。将打印log的代码删除后又恢复正常。

目前估计是缓存满了。待解决。。删除邮件代码如下:

function _M:sysdelemail()
  local readrewarded = {}
  local readunrewarded = {}
  local unread = {}

  for k , v in pairs( self.__data ) do
    if 1 == v.isread then
      if 1 == v.isreward then
        table.insert( readrewarded , v.csv_id )
      else
        table.insert( readunrewarded , v.csv_id )
      end
    else
      local tmp = {}
      tmp.csv_id = v.csv_id
      tmp.acctime = v.acctime
      table.insert( unread , tmp )
    end
  end
--delete read and getrewarded first

  for _ , v in ipairs( readrewarded ) do
    local tmp = self.__data[ tostring( v ) ]
    tmp.isdel = 1
    tmp:__update_db( { "isdel" } )
    self.__data[ tostring( v ) ] = nil
    self.__count = self.__count - 1
  end

  if self.__count <= self.__MAXEMAILNUM then
    return
  end
-- if still more than MAXEMAILNUMM then delete read , unrewarded
  for _ , v in ipairs( readunrewarded ) do
    local tmp = self.__data[ tostring( v ) ]
    tmp.isdel = 1
    tmp:__update_db( { "isdel" } )
    self.__data[ tostring( v ) ] = nil
    self.__count = self.__count - 1
  end

  if self.__count <= self.__MAXEMAILNUM then
    return
  end
-- last delete the earlist unread emails
  table.sort( unread , function ( ta , tb ) return ta.acctime < tb.acctime end )

  --[[ 如果在此打印排序后的邮件列表变回出现描述的问题打印到一半结束,去掉后却正常

    for k , v in ipairs( unread ) do

      print( k , v )

    end

  --]]

  local diff = self.__count - self.__MAXEMAILNUM
  print( "sizeof diff is ****************************************" , diff , #unread )
  local tmp = {}
  for i = 1 , diff do
    tmp = self.__data[ tostring( unread[ i ].csv_id ) ]
    assert( tmp )
    tmp.isdel = 1
    tmp:__update_db( { "isdel" } )
    self.__data[ tostring( unread[ i ].csv_id ) ] = nil

    self.__count = self.__count - 1
  end
  print( "sizeof unread is ****************************************" , self.__count )
end

  

  昨天以为是缓存区满了,但今天又测试的一下,输出更多的log,没有出现昨天的问题。纠结中,现在用的是 skynet 框架 ,仍在学习中。感觉这会是个定时炸弹,不知哪天爆了。希望用skynet并pengdao过类似问题的同学不吝赐教。。

lua 写逻辑打印log时,打印到一半后停止不再打印,程序停止的更多相关文章

  1. Retrofit 打印log时,中文会显示类似%E8%BE%BD字符

    https://blog.csdn.net/honghailiang888/article/details/54289632?utm_source=blogxgwz6 参照Android Retrof ...

  2. iOS objc_msgSend 野指针Crash 从 Log 提取 Crash 时 selector 的地址和名字并打印

    从 crash stack log 里面,提取 objc_msgSend 关键字,定位是否是野指针问题导致的crash,如果是则打印 crash 时的 objc_msgSend 调用的第二个参数,即 ...

  3. iOS 设备屏幕上实时打印 Log 的小工具

    需求 写这个小工具的想法,主要来源于很多团队都会用友盟.TalkingData 等第三方框架做自定义事件统计:不过统计代码加好之后,没有很好的方法来让测试工程师验证一下事件加上了没有,调用次数有没有重 ...

  4. 使用log4j2打印Log,log4j不能打印日志信息,log4j2不能打印日志信息,log4j和logj2,idea控制台信息乱码(文末)

    说来惭愧,今天就写了个"hello world",了解了一下log4j的日志. 本来是想在控制台打印个log信息,也是遇到坎坷重重,开始也没去了解log4j就来使用,log4j配置 ...

  5. css去掉使用bootstrap框架后打印网页时预览效果下的超链接

    在我们写网页的时候,超链接是链接各个页面的桥梁,也是搜索引擎爬虫(spider)收录网站页面的关键,因此,在每个网页中会有许多的超链. 今天,一个同行妹妹在使用了bootstrap框架来搭建自己的网站 ...

  6. 封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类

    快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------- ...

  7. 解决华为手机不打印Log信息的问题

    在之前安装了Android Studio后,发现了一个很苦恼的事情,就是在程序中的写Log语句,不能正常的在Logcat中打印出来,这对于解决程序bug真是一刀切断,让人无从下手,在各种尝试后,首先我 ...

  8. Android Java层,Native层,Lib层打印Log简介【转】

    本文转载自:https://blog.csdn.net/AndroidMage/article/details/52225068 说明: 这里我根据个人工作情况说明在各个层打印log.如有问题欢迎拍砖 ...

  9. 打印页面时a标签不显示URL的方法

    以前写博客啊,总想写一篇大作,然后希望能挂到博客园首页,隔一会儿看看阅读量有多少.其实哪有那么多大作,大部分时间都是解决了一个小问题,然后需要记录一下.比如下面这篇. 今天遇到一个需求是,打印网页时, ...

随机推荐

  1. spoj 10628

    http://www.spoj.com/problems/COT/ 树上第k小元素 LCA + 可持久化线段树 每个新的版本都是由其父亲版本转化而来. #include <cstdio> ...

  2. PHP输出语句大杂烩

    一 echo echo() 实际上不是一个函数,是php语句,因此您无需对其使用括号.不过,如果您希望向 echo() 传递一个以上的参数,那么使用括号会发生解析错误.而且echo是返回void的,并 ...

  3. 《从零开始学Swift》学习笔记http(Day1)——我的第一行Swift代码

    Swift 2.0学习笔记(Day1)——我的第一行Swift代码 原创文章,欢迎转载.转载请注明:关东升的博客 当第一次看到下面代码时我石化了,这些代码是什么东东?单词拼出来的? import Fo ...

  4. Stolz–Cesàro theorem

    w http://planetmath.org/sites/default/files/texpdf/33795.pdf Stolz–Cesàro theorem - Wikipedia  https ...

  5. ArcGIS for window mobile 数据打开

    前言 环境信息:ArcGIS for windows mobile 10.1.1,ArcGIS runtime sdk for windows mobile 10.1.1 一.MapCache的打开 ...

  6. Vue表格中时间的处理

    Vue中表格的数据应该来自后台数据库,然后从数据库中读取到的数据,时间格式可能有些不同,我们可以根据实际需要来对这个时间进行转化. 这里介绍一个js库,它提供了强大的日期处理功能,功能强大且只有2k大 ...

  7. Python操作Redis(一)

    redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  8. 剑指offer 面试23题

    面试23题: 题目:如果一个链表中包含环,如何找出环的入口节点? 解题分析:其实此题可以分解为三个题目:1)如何判断一个链表中是否包含环?2)如何找到环的入口节点?3)如何得到环中节点的数目? 解决此 ...

  9. GIS学习和开发的在线资源

    1.OpenGIS Consortium标准,http://www.opengeospatial.org.著名的OGC标准是每个GIS开发者最后都不得不学习的,或深或浅. 2.SharpMap,Pro ...

  10. android 对话框中的进度条 (ProgressDialog)

    from:http://byandby.iteye.com/blog/817214 显然要定义对话框进度条就要用ProgressDialog,首先我们需要创建ProgressDialog对象,当然这里 ...