C-> Http POST中的NGINX + FCGI,带有大文件和非常大的答复我必须使用多个读取和写入吗?

问题描述

这是情况。我必须开发一个FCGI-Application,该应用程序必须以HTTP-POST-Request的形式处理约150MB有效负载的请求,该请求将以约150MB的数据大小进行回复。

要读取POSTED数据,我创建了一个功能(如下所述)。问题是,

  • 我是否必须使用 multiple FCGX_GetStr(..) -calls,还是使用一个 FCGX_GetStr(。 。)调用,我需要 do-while循环吗?文档/包含文件中说明了返回值:“

    读取的字节数。如果结果小于n,则表示已到达输入的结尾。

  • 将0作为来自 FCGX_GetStr(..)的字节-读取-返回值表示我们到达末尾吗?

  • 我太笨了,或者没有FCGX_FPrintF等手册页?

char *getRequestContent(FCGX_Request *request) {

        char *content_length_str = FCGX_GetParam("CONTENT_LENGTH",request->envp);
         
        int allBytesRead = 0;
        int bytesRead = 0;
        .....

        int content_length = strtol(content_length_str,(char **)NULL,10);
        ......
        char *buffer = (char *)malloc(sizeof(char)*content_length+1); // Allocate incoming buffer
        .....  
        do {
                bytesRead = FCGX_GetStr(buffer+allBytesRead,// Start Address of Buffer
                            content_length-allBytesRead,// How much to read
                            request->in);                         // from where 
                 
                if (bytesRead == 0) break;        // possible error in the Header .. simply skip me
                if (bytesRead < 0) {              // Error Occured ??
                     // handle some Errors        // Annoy User and bail out
                }
                allBytesRead += bytesRead;
        } while (allBytesRead < content_length);  
      
        buffer[content_length] = '\0';            // Just to be safe,terminate the String
        return buffer;
   }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...