123
返回列表 发新帖
楼主: ruyue318

[笔记] 程序TimeOut后几种处理的第三种方法(面试题)

[复制链接]
论坛徽章:
1
生肖徽章2007版:兔
日期:2008-10-17 10:20:14
21#
发表于 2008-10-25 15:26 | 只看该作者
能详解吗?想知道啦

使用道具 举报

回复
论坛徽章:
7
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44奥运会纪念徽章:棒球
日期:2008-04-24 16:00:06奥运会纪念徽章:马术
日期:2008-04-25 21:00:24授权会员
日期:2008-07-28 12:24:55奥运会纪念徽章:游泳
日期:2008-09-08 12:41:582009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:00
22#
发表于 2008-10-27 11:42 | 只看该作者
好帖

使用道具 举报

回复
论坛徽章:
8
生肖徽章2007版:虎
日期:2008-10-16 08:11:34生肖徽章2007版:猪
日期:2008-10-29 08:43:55生肖徽章2007版:鼠
日期:2008-12-16 13:16:34生肖徽章2007版:狗
日期:2008-12-18 08:05:04生肖徽章2007版:牛
日期:2009-01-07 00:47:23季节之章:冬
日期:2009-02-04 13:14:16生肖徽章2007版:鸡
日期:2009-02-05 12:43:552010新春纪念徽章
日期:2010-03-01 11:08:34
23#
发表于 2008-10-30 21:55 | 只看该作者
期待奇迹 出现!

使用道具 举报

回复
论坛徽章:
11
2009新春纪念徽章
日期:2009-01-04 14:52:28ITPUB元老
日期:2009-04-11 21:27:42生肖徽章2007版:牛
日期:2009-06-08 00:31:34
24#
发表于 2008-10-30 23:19 | 只看该作者

嘿嘿,受启发了

这两天用的一个培训系统,服务器端某个网络设备配置的有问题,一但在gui里2分钟没有操作,就会把连接给断掉
正好看到这个帖子,想到可以用避免超时一样的技术来解决这个问题。

具体解决超时问题的方法见以下代码。

关键是用CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'来避免超时。


  1. REPORT  z_timeout.

  2. PARAMETERS seconds TYPE i.

  3. DATA: base TYPE i,
  4.       span TYPE i,
  5.       ms TYPE i,
  6.       text_clock TYPE string,
  7.       timer TYPE REF TO if_abap_runtime.

  8. START-OF-SELECTION.

  9.   ms = seconds * 1000 . " Maybe different in other OS, we have used win2003

  10.   timer = cl_abap_runtime=>create_lr_timer( ).

  11.   base = timer->get_runtime( ) / 1000.

  12.   DO.

  13.     DO 100 TIMES.
  14.       span = timer->get_runtime( ) / 1000 - base.
  15.       IF span > ms.
  16.         MESSAGE 'Time is up.' TYPE 'S'.
  17.         LEAVE PROGRAM.
  18.       ENDIF.

  19.       text_clock = span.
  20.       CONCATENATE 'We have spend' text_clock 'milliseconds.'
  21.         INTO text_clock SEPARATED BY ' '.

  22.       CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
  23.         EXPORTING
  24.           percentage = sy-index
  25.           text       = text_clock.

  26.       WAIT UP TO 3 SECONDS.  " Maybe use more long waiting time

  27.     ENDDO.

  28.   ENDDO.
复制代码

使用道具 举报

回复
论坛徽章:
0
25#
发表于 2011-11-18 17:56 | 只看该作者
REPORT  z_timeout.

PARAMETERS seconds TYPE i.

DATA: base TYPE i,
      span TYPE i,
      ms TYPE i,
      text_clock TYPE string,
      timer TYPE REF TO if_abap_runtime.

START-OF-SELECTION.

  ms = seconds * 1000 . " Maybe different in other OS, we have used win2003

  timer = cl_abap_runtime=>create_lr_timer( ).

  base = timer->get_runtime( ) / 1000.

  DO.

    DO 100 TIMES.
      span = timer->get_runtime( ) / 1000 - base.
      IF span > ms.
        MESSAGE 'Time is up.' TYPE 'S'.
        LEAVE PROGRAM.
      ENDIF.

      text_clock = span.
      CONCATENATE 'We have spend' text_clock 'milliseconds.'
        INTO text_clock SEPARATED BY ' '.

      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
          percentage = sy-index
          text       = text_clock.

      WAIT UP TO 3 SECONDS.  " Maybe use more long waiting time

    ENDDO.

  ENDDO.

使用道具 举报

回复
论坛徽章:
0
26#
发表于 2011-11-19 12:02 | 只看该作者
没有最好,只有更好。

只要是人看的结果,一般结果的数据量一般不会特别大。

但是可能需要检索非常巨大的数据去获得结果,所以可以通过优化索引和程序来提高数据读取效率。

比如把一个大表改为几个小表。去除不必要的字段读取和检索。

缩短期间等。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表