mb_stripos巨大的时差
mb_stripos huge time difference
您好,我正在进行全文搜索,并在我的函数中找到字符串 position(用于在字符串出现前后剪切 x 个字符)我正在使用 php 函数 mb_stripos()
。每个请求有几次(下面的代码)调用。字符串长度为 500 - 100 000 个字符。
但问题是,在桌面上(每个请求调用几次)大约需要 500 毫秒,但在服务器上需要 20 000 毫秒。
- 98% 的请求时间存储在一个长度为 100 000 个字符的字符串上
- 通过回显测量
microtime()
- 桌面有 php 7.0.9 和 win7 os 和服务器 7.1.3-3+0~20170325135815.21+jessie~1.gbpafff68 linux os
- 两个 apaches(桌面或服务器)都有 PHP 加速和 OPcache
- 它在 symfony fw 上(可能无关紧要)
most php 操作在服务器上更快
while (($lastPos = mb_stripos($content, $searchString, $lastPos)) !== false) {
if($lastPos <= $offset)
$startStr = 0;
else
$startStr = $lastPos - $offset;
$subs[] = mb_substr($content, $startStr, 100);
$lastPos = $lastPos + strlen($searchString);
}
为什么差别这么大?
所以问题解决了:缺少库 mbstring
。
使用php7.1.x时的解决方法:apt-get install php7.1-mbstring
在我们的情况下,出现了一些错误:
apt-get update
然后 apt-get install php7.1-mbstring
并重新启动 apache。
您好,我正在进行全文搜索,并在我的函数中找到字符串 position(用于在字符串出现前后剪切 x 个字符)我正在使用 php 函数 mb_stripos()
。每个请求有几次(下面的代码)调用。字符串长度为 500 - 100 000 个字符。
但问题是,在桌面上(每个请求调用几次)大约需要 500 毫秒,但在服务器上需要 20 000 毫秒。
- 98% 的请求时间存储在一个长度为 100 000 个字符的字符串上
- 通过回显测量
microtime()
- 桌面有 php 7.0.9 和 win7 os 和服务器 7.1.3-3+0~20170325135815.21+jessie~1.gbpafff68 linux os
- 两个 apaches(桌面或服务器)都有 PHP 加速和 OPcache
- 它在 symfony fw 上(可能无关紧要)
most php 操作在服务器上更快
while (($lastPos = mb_stripos($content, $searchString, $lastPos)) !== false) { if($lastPos <= $offset) $startStr = 0; else $startStr = $lastPos - $offset; $subs[] = mb_substr($content, $startStr, 100); $lastPos = $lastPos + strlen($searchString); }
为什么差别这么大?
所以问题解决了:缺少库 mbstring
。
使用php7.1.x时的解决方法:apt-get install php7.1-mbstring
在我们的情况下,出现了一些错误:
apt-get update
然后 apt-get install php7.1-mbstring
并重新启动 apache。