lr_resume_transaction()
继续在脚本中报告事务数据。
void lr_resume_transaction(const char * transaction_name);
参数说明:
transaction_name:事务的名称。
保留此功能是为了向后兼容。有关报告部分事务持续时间的更一般方法,请参阅lr_start_sub_transaction和lr_set_transaction。
lr_resume_transaction函数恢复由lr_stop_transaction挂起的脚本中的事务数据的报告。调用lr_stop_transaction后,由“get”事务函数返回的统计信息仅反映该调用的数据,直到调用此函数。
但是,数据收集不会中断。调用lr_resume_transaction后,“get”函数自事务开始后返回所有数据。此外,分析测试时的最终结果将反映总值,包括交易停止和恢复之间的期间。
如果未调用lr_resume_transaction,则“get”函数和最终结果仅反映从事务开始到lr_stop_transaction调用的持续时间。因此,可以有条件地使用lr_stop_transaction和lr_resume_transaction来收集关于整个事务或仅开始的信息。要完成此任务,只有满足条件时才调用lr_resume_transaction。
注意:当以这种方式收集数据时,分析中的数据将反映满足lr_resume_transaction的条件的测试,以及不满足条件的测试。
如果您希望排除的部分在事务结束之前结束,则此技术不适用。如果需要区分满足lr_resume_transaction条件的情况和不在分析数据中的情况,则此技术不适用。
有关有条件地记录持续时间的其他方法,请参阅lr_start_sub_transaction和lr_set_transaction。
示例:lr_stop_transaction和lr_resume_transaction
在以下示例中,事务被停止并恢复以显示对报告的持续时间的影响。
Action()
{
int i;
int iteration = 100;
char aStr [100];
lr_start_transaction(“Stop&Start”);
/ *做业务流程的一部分。代表
这里通过循环来保证一些
时间流逝。 * /
for(i = 0; i<iteration; ++ i){
sprintf(aStr,“%d”,i);
lr_log_message(“%d”,i);
}}
/ *输出持续时间到此点(0.343750秒)
与事务活动。 * /
lr_output_message(“First time =%f”,
lr_get_transaction_duration(“Stop&Start”));
//停止事务
lr_stop_transaction(“Stop&Start”);
/ *将持续时间输出到此点(0.359375秒)
与事务停止。 * /
lr_output_message(“停止后立即=%f”,
lr_get_transaction_duration(“Stop&Start”));
//确保一些时间过去
for(i = 0; i<iteration; ++ i){
sprintf(aStr,“%d”,i);
lr_log_message(“%d”,i);
}}
/ *将持续时间输出到此点(0.359375秒)
交易仍然停止,但是
更多的时间。注意时间是一样的。
在事务处理时在循环中花费的时间
停止不报告。 * /
lr_output_message(“停止和循环=%f”后,
lr_get_transaction_duration(“Stop&Start”));
//恢复事务
lr_resume_transaction(“Stop&Start”);
/ *请注意,随着事务恢复,
自从开始以来所有的时间都过去了
报告(0.781250秒),包括花费的时间
在事务被停止的循环中。 * /
lr_output_message(“恢复时间=%f”后,
lr_get_transaction_duration(“Stop&Start”));
//将时间添加到持续时间
for(i = 0; i<iteration; ++ i){
sprintf(aStr,“%d”,i);
lr_log_message(“%d”,i);
}}
/ *报告的总时间(1.140625秒)* /
lr_output_message(“resume resume and loop =%f”后,
lr_get_transaction_duration(“Stop&Start”));
//结束事务
lr_end_transaction(“Stop&Start”,LR_AUTO);
return 0;
}}
输出:
Action.c(11):通知:事务停止和启动开始。
Action.c(23):第一次= 0.343750
Action.c(27):通知:事务停止和开始停止。
Action.c(31):停止后立即= 0.359375
Action.c(45):停止和循环后= 0.359375
Action.c(49):通知:事务停止和启动恢复。
Action.c(55):恢复时间= 0.781250
Action.c(65):resume和循环后= 1.140625
Action.c(70):通知:事务停止和开始以通过状态结束(持续时间:1.1406)。