• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua写逻辑打印log时,打印到一半后停止不再打印,程序停止

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

问题描述: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过类似问题的同学不吝赐教。。 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
lua小结发布时间:2022-07-22
下一篇:
2d-x中Lua类型强转问题发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap