我的服务器上有一部分应用程序必须尽可能快地返回,现在需要0.5秒到1.8秒,这甚至不是计算的一部分。我的意思是(使用microtime)我已经计算了进程的每个部分,mysql调用和计算每次只需不到0.2秒,但返回和打印添加额外的秒。我能做些什么来尽可能快地做到这一点,因为现在这是慢得令人无法接受的?
我可以想到两件事:数据是在函数内部构建的,并且大数组作为值返回,因此简单地打印而不是返回可能更快。第二件事是我认为php打印缓冲区存在问题。当我分解文本时,我打印成更小的块,我看到每个块打印立即(~0.00002秒),除了一个将占用大约0.5-1.5秒的所有额外时间,这是我认为打印缓冲区已填满并且必须做一堆额外的工作。有没有什么办法解决这一问题?
一些细节:正在打印的文本大小约为150Kb,我没有使用flush或ob_函数,但我已经对它们进行了实验,这似乎没有什么区别,我没有使用memcached。我知道echo比print更快,因为它是一个语句而不是一个函数调用,但这有多大差异呢?由于打印将返回打印的文本,因此较大的文本在打印时需要更长的时间吗?
答案 0 :(得分:2)
但是返回并打印添加额外的第二个
根据评论,这似乎很奇怪。鉴于应用程序的性质,我的想法是:
数据构建在函数内部,大数组作为值
返回
你为什么推迟这样的输出?大型数组是PHP中的一个重要性能问题(NB Dan Lee:数字和关联)。但最重要的是添加元素/引用单个元素 - 移动数组不是问题。
为什么不早点将数据发送到输出缓冲区?
我认为打印缓冲区已经填满
似乎不太可能。
我不使用ob_start和flush
然后这样做 - 优先使用gz处理程序。