Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 巨大的时差_Php_String_Symfony_Stripos - Fatal编程技术网

Php 巨大的时差

Php 巨大的时差,php,string,symfony,stripos,Php,String,Symfony,Stripos,您好,我正在进行全文搜索,在查找字符串位置的函数中(对于字符串出现之前和之后的剪切x字符),我使用的是php函数mb_stripos()。每个请求调用几次while(代码如下)。字符串的长度为500-100000个字符 但问题是,在桌面上(每个请求调用几次)需要500毫秒,而在服务器上则需要20000毫秒 请求时间的98%存储在一个长度为100000个字符的字符串上 通过回声测量microtime() 桌面有PHP7.0.9和win7操作系统,服务器7.1.3-3+0~201703251358

您好,我正在进行全文搜索,在查找字符串位置的函数中(对于字符串出现之前和之后的剪切x字符),我使用的是php函数
mb_stripos()
。每个请求调用几次while(代码如下)。字符串的长度为500-100000个字符

但问题是,在桌面上(每个请求调用几次)需要500毫秒,而在服务器上则需要20000毫秒

  • 请求时间的98%存储在一个长度为100000个字符的字符串上
  • 通过回声测量
    microtime()
  • 桌面有PHP7.0.9和win7操作系统,服务器7.1.3-3+0~20170325135815.21+jessie~1.gbpafff68和linux操作系统
  • apaches(桌面或服务器)都有PHP加速和OPcache
  • 它在西蒙尼fw上(可能不重要)
  • 大多数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);
    }
    
    while(($lastPos=mb_stripos($content,$searchString,$lastPos))!==false){
    
    if($lastPosSo)问题已解决:缺少库
    mbstring

    使用php7.1.x时的解决方案:
    apt get install php7.1-mbstring

    在我们的情况下,存在一些错误,因此:


    apt get update
    然后
    apt get install php7.1-mbstring
    并重新启动apache。

    您的服务器版本是最新版本吗?我可能错了,但我通常会做相反的事情:在服务器和桌面上都有一个已知的稳定版本,最终在桌面上还有更新的版本,用于测试和实验s、 在您的情况下,可能您服务器上的版本不如桌面上的版本稳定。您在两个系统上都尝试过相同的版本吗?我唯一看到的是系统本身,可能是Linux上的代码或配置螺钉中的某些内容。很难猜到不知道其他所有内容是否在两端都正常工作。现在我试图用mb_stripos()添加到app_dev.php(symfony的'index')循环中,出现了错误
    未捕获的错误:在…
    中调用未定义的函数mb_stripos()。
    我完全困惑了…如果我添加到代码
    phpinfo()
    中,仍然有php 7.1.3版…那么在控制器中它怎么可能工作?(但速度非常慢)你试过重新安装你的apache吗?也许某个地方有一个missng库?很遗憾,我没有权限这么做,但我必须问我们的管理员…我把它作为最后一个选项…我会问他。但我不明白为什么我在同一台服务器上使用这个函数,同一个php但在控制器函数中工作…(不好,但工作正常)干得好!别忘了接受答案