在我的CGI脚本中,我向另一台服务器发出长(最多10秒)请求,解析结果并向我的用户显示响应(通过AJAX)。但是另一个服务器所有者要求我每10秒执行一次请求不超过1次,所以:
首先我想一下Cron将打开简单文本文件(队列文件),读取第一行并将其作为请求发送到另一台服务器。之后,它会将结果保存在另一个文件中(我将缓存所有结果)。所以我的CGI将首先检查缓存文件并尝试在其中找到结果,然后(如果找不到结果)它将在队列文件中保存任务(对于Cron)。
但是Cron每分钟只运行一次,所以我的用户必须等待很长时间......
那我怎么能通过CGI做到这一点?
可能是:
之后会将请求保存到 队列文件和fork。分叉 过程将等待直到它 请求将在顶部 队列并将发出请求 另一台服务器。
之后会保存结果 缓存文件。你怎么想?
可能已经为这些任务编写了一些模块吗?
答案 0 :(得分:1)
一种选择是创建一个本地守护程序/服务(Linux / Windows),用于处理向远程服务器发送所有请求。除了在专用端口/套接字上之外,您的Web服务可以使用相同的协议与此守护程序而不是远程服务进行通信。守护程序可以接受来自Web服务器/应用程序的请求,并且每十秒钟一次,如果有待处理的请求,它可以将其发送到远程服务器,并且当有响应时,它可以将其转发回传入的请求套接字。您可以将此守护程序视为仅添加排队功能的代理服务器。请注意,守护进程实际上不必解析传入请求或返回结果;它只是在每种情况下将位转发到目的地。它只需要实现排队和网络功能。