Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 从内存中重复grep常量文本的简单方法_Php_Mysql_Autocomplete_Grep - Fatal编程技术网

Php 从内存中重复grep常量文本的简单方法

Php 从内存中重复grep常量文本的简单方法,php,mysql,autocomplete,grep,Php,Mysql,Autocomplete,Grep,简单的问题-我在网页上有一个自动完成栏,它通过一个非常大的文本列表(比如100MB)自动完成,然后根据用户选择的结果调用MySQL。显然,使用自动完成栏,我希望它能够响应,并能非常快速地给出结果(搜索时间为100毫秒) 它的列表太大,无法使用php strpos,而且MySQL即使在缓冲池预热的情况下也不够快。我现在使用的解决方案是php在服务器上调用grep,它工作得很好。。。不过,由于RAM的限制,这不会扩展:当我们实际上搜索同一个文件时,对grep的每次额外调用都会分配新的内存 这不是一个

简单的问题-我在网页上有一个自动完成栏,它通过一个非常大的文本列表(比如100MB)自动完成,然后根据用户选择的结果调用MySQL。显然,使用自动完成栏,我希望它能够响应,并能非常快速地给出结果(搜索时间为100毫秒)

它的列表太大,无法使用php strpos,而且MySQL即使在缓冲池预热的情况下也不够快。我现在使用的解决方案是php在服务器上调用grep,它工作得很好。。。不过,由于RAM的限制,这不会扩展:当我们实际上搜索同一个文件时,对grep的每次额外调用都会分配新的内存


这不是一个常见的问题吗?难道没有一个简单的程序已经存在,你可以让它继续运行,它把文件保存在内存中,然后你从内存中的同一个区域进行grep吗?有点像一个非常简单的数据库?

你需要澄清你想要什么,你说RAM在一段中不能很好地扩展,但你想在下一段中将其保存在内存中。对不起,我的意思是它不能很好地扩展,因为每次对grep的新调用都是并发的,不会使用现有grep实例分配的内存。数据库似乎是最明智的解决方案。MySQL甚至有内存表,所以或多或少可以做你想做的事情:只是构建了你建议的内存表,速度实在太慢了。。。每次搜索200毫秒。一旦文件进入缓存,grep的速度就会快得多。对于这样的问题,必须有更好的解决方案。表结构是什么样子的?正确的指数可以改变很多。