问题描述: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. (六)通过solr7的API实现商品的列表查询

    (六)通过solr7的API实现商品的列表查询 工具类: 获取 HttpSolrClient public class Constant { public static HttpSolrClient ...

  2. Instapaper 使用经验和技巧

    Instapaper 分类本质是文件夹整理,没有标签. 文件夹意味着一篇文章只能放在一个文件夹里,不像标签可以实现一篇文章多个标签的功能. 一.文件夹和Like功能 1.已有文件夹: Home:存放所 ...

  3. python的基础数据类型笔记

    注意:此文章基于python3.0以上做的笔记. python的基础数据类型大体有一下几种 一.int int类型有以下几种方法 .bit_length 返回数据在内存中所占的比特位 如下: prin ...

  4. SpringMVC流程架构图

    [组件说明] 以下组件通常使用框架提供实现: 1.DisPatcherServlet:前端控制器(不需要程序员开发) 用户请求到达前端控制器,它相当于MVC模式中的C(Controller),Disp ...

  5. javascript实例:路由的跳转

    <!doctype html> <html lang="en"> <body> <a href="#/home"> ...

  6. javascript实例:显示时间

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Linux vim编写程序时出现高亮字符,如何取消?

    在“命令模式”下输入“:nohl“,再按回车,便可以取消高亮显示.

  8. MySQL中kill所有慢查询进程和锁表进程

    1.kill所有慢查询进程: #!/bin/bash mysql -uroot -pMy_Password -e "show processlist" | grep -i &quo ...

  9. python常用模块——sys模块

    sys模块的功能很多,下面介绍几个常用的模块. 1.sys.argv:从外部向程序内部传递参数 #!/usr/bin/env python import sys print(sys.argv[0]) ...

  10. MySQL数据库(8)_MySQL数据库总结

    sql语句规范 sql是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 在使用它时,只需要发出“做什么” ...