我目前有一个c ++程序通过套接字接收来自Web应用程序的请求,并生成一个将由此应用程序读取的Json文件(150 Ko)。
答案 0 :(得分:2)
如果我理解你所写的内容正确,那么Web服务器就会将请求转发给你的C ++程序,并且你希望PHP应用程序通过向web服务器发出web请求来读取数据,web服务器又将请求转发给用于提供响应的C ++程序。
以下是提高此设置速度的三个想法:
考虑使用流式解析器来解析从套接字读取的数据。这将允许您的PHP应用程序在从套接字读取所有数据之前开始使用和处理数据。
许多JSON库不提供流解析API(请参阅Is there a streaming API for JSON?)。例如,PHP的内置JSON API没有。但是,请参阅Incremental JSON parsing in php。
PHP有一个内置的XML pull解析器XMLReader。如果您的C ++程序生成了XML数据,您可以使用PHP中的XMLReader逐步解析XML,这意味着您的PHP应用程序不需要等到数据完全下载完毕。
如果您的C ++程序正在从文件读取JSON并通过套接字发送文件内容,请考虑使用zero-copy I/O。另请参阅vmsplice()。
如果C ++程序和PHP应用程序在同一台服务器上运行,则可以使用共享内存段。这将消除通过套接字传输数据的需要,因为C ++程序和PHP应用程序都可以访问一段内存。 C ++程序会将所有数据写入共享内存段,然后PHP应用程序将读取数据。
有关详细信息,请参阅PHP的Semaphore functions。