0

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

我可以想到两种可能的事情:数据构建在函数内部,并且返回一个大数组作为值,因此简单地打印而不是返回可能会更快。第二件事是我认为 php 打印缓冲区存在问题。当我将我打印的文本分解成更小的块时,我看到每个块都会立即打印(~0.00002 秒),除了一个会花费大约 0.5-1.5 秒的所有额外时间,我认为打印缓冲区已经填满并且必须做一堆额外的工作。有没有什么办法解决这一问题?

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

4

1 回答 1

2

但是返回和打印会增加额外的第二个

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

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

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

为什么不早点将数据发送到输出缓冲区呢?

我认为打印缓冲区已满

似乎不太可能。

我不使用 ob_start 和 flush

然后这样做 - 优先使用 gz 处理程序。

于 2012-06-15T09:49:53.790 回答