PHP函数返回/打印速度

PHP函数返回/打印速度,php,performance,optimization,Php,Performance,Optimization,我在服务器上有一部分应用程序必须尽快返回,现在需要0.5到1.8秒,这甚至不是计算的一部分。我的意思是(使用微时间)我已经对进程的每个部分进行了计时,mysql调用和计算每次花费的时间不到0.2秒,但返回和打印会增加额外的秒数。我能做些什么使它尽可能快,因为现在这是不可接受的缓慢 我可能会想到两件事:数据构建在函数中,并返回一个大数组作为值,因此简单地打印可能比返回更快。第二件事是我认为php打印缓冲区存在问题。当我将打印的文本分成更小的块时,我看到每个块都会立即打印(~0.00002秒),除了

我在服务器上有一部分应用程序必须尽快返回,现在需要0.5到1.8秒,这甚至不是计算的一部分。我的意思是(使用微时间)我已经对进程的每个部分进行了计时,mysql调用和计算每次花费的时间不到0.2秒,但返回和打印会增加额外的秒数。我能做些什么使它尽可能快,因为现在这是不可接受的缓慢

我可能会想到两件事:数据构建在函数中,并返回一个大数组作为值,因此简单地打印可能比返回更快。第二件事是我认为php打印缓冲区存在问题。当我将打印的文本分成更小的块时,我看到每个块都会立即打印(~0.00002秒),除了一个块会占用大约0.5-1.5秒的额外时间,我认为打印缓冲区已经填满了,需要做大量额外的工作。有办法解决这个问题吗

一些细节:正在打印的文本大小约为150Kb,我没有使用flush或ob_u函数,但我已经用它们做了实验,似乎没有什么不同,我也没有使用memcached。我知道echo比print快,因为它是一个语句而不是函数调用,但这会有多大的不同呢?因为打印将返回它打印的文本,所以较大的文本在打印时会花费更长的时间吗

但返回和打印会增加第二个问题

根据评论,这似乎很奇怪。鉴于应用程序的性质,我的想法是:

数据构建在函数中,并返回一个大数组作为值

为什么要这样推迟输出?大型数组在PHP中是一个很大的性能问题(NB Dan Lee:数字和关联)。但关键在于添加元素/引用单个元素-移动数组不是问题

为什么不提前将数据发送到输出缓冲区

我想打印缓冲区已经满了

似乎不大可能

我不使用ob_启动和冲洗


然后这样做-对于gz处理程序的首选项。

您能举个例子吗?因为这似乎不是问题,所以制作一个不做所有数据库内容和计算的组件,只需硬编码一些字符串,并向我们展示如何将其发送给用户,以及何时开始变慢。我们可以重复测试,检查是否看到相同的情况,等等。很难说是怎么回事。在服务器上安装xdebug并评测代码。这是一个非常强大的工具,用于分析程序内部发生的情况。如何“打印”文本?使用打印?回声?只有一个还是几个?是否使用ob_启动/刷新?是否启用了apc?memcached?事实上你的经历很奇怪。我刚刚试过$a=str_repeat('test',10000000);打印$a;对于一个超过40MB的文件,只需0.03秒。打印似乎没有问题,也许问题出在其他地方。我真的很想看看你的实际代码。@hackartist:请用要求的信息更新问题。一般来说,回应澄清的请求时,更新你的帖子,而不是回复评论。首先,一个问题不需要阅读评论就可以理解。另一方面,问答网站也是如此,而不是论坛,评论并不打算(也不适合)用于讨论。