使用LoadRunner脚本并发下载文件,出现19890错误
需求:10个客户并发下载同一份zip文件。
执行的时候,8个Fail了,只下载了两份zip,且无论执行多少遍,都是这样。
错误信息如下:
message code:-19890
C interpreter run time error: memory violation:exception access_violation received
网上各种解决办法都试过,无效,通过排除法,对脚本一点点注释、执行,最终发现导致本错误的根本原因是:
web_set_max_html_param_len("10240000");这一句中指定的长度太大了,而我要下载的文件只有4k,改成4096000后,问题解决。
Action() { int flen; longfiledes; char filename1[50]; charfilename[50]; charfilepath[50]; char *fileSuffix; lr_save_datetime("%Y%m%d%H%M%S",DATE_NOW,"now"); fileSuffix = lr_eval_string("{num}"); sprintf(filename,"%s%d.rar",lr_eval_string("{now}"),fileSuffix); lr_save_string(filename,"filename1"); strcpy(filepath,"D:\\test\\download\\"); strcat(filepath,lr_eval_string("{filename1}")); lr_message("%s",filepath); web_set_max_html_param_len("10240000"); web_reg_save_param("fcontent","LB=", "RB=", "SEARCH=BODY", LAST); lr_rendezvous("并发"); lr_start_transaction("download"); web_url("attachment.aspx", "URL=http://172.0.0.1:8081/package/2015wwerwt34w553qq.zip", "TargetFrame=","Resource=0", "RecContentType=application/zip", "Referer=", "Snapshot=t1.inf", "Mode=HTML", LAST); lr_end_transaction("download",LR_AUTO); flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); if(flen> 0) { //以写方式打开文件 if((filedes = fopen(filepath,"wb")) == NULL) { lr_output_message("Open File Failed!"); return -1; } //写入文件内容 fwrite(lr_eval_string("{fcontent}"),flen, 1, filedes); //关闭文件 fclose(filedes); } return 0; }