Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays - Fatal编程技术网

PHP的速度/内存问题

PHP的速度/内存问题,php,arrays,Php,Arrays,可能重复: 我在速度和内存使用方面有问题 我有一个脚本,需要能够运行得非常快。它所做的只是从1-100MB加载多个文件,包括一个值列表,并对照另一个列表检查其中有多少 我的首选方法是将文件中的值加载到数组中(explode),然后循环遍历该数组,并使用isset检查值是否存在 我的问题是有太多的值,它使用了超过10GB的内存(我不知道为什么它使用这么多)。因此,我一次将几个值从文件加载到内存中,而不是将整个文件分解。这会降低内存使用率,但速度非常慢 有更好的方法吗 代码示例: $check=a

可能重复:

我在速度和内存使用方面有问题

我有一个脚本,需要能够运行得非常快。它所做的只是从1-100MB加载多个文件,包括一个值列表,并对照另一个列表检查其中有多少

我的首选方法是将文件中的值加载到数组中(
explode
),然后循环遍历该数组,并使用
isset
检查值是否存在

我的问题是有太多的值,它使用了超过10GB的内存(我不知道为什么它使用这么多)。因此,我一次将几个值从文件加载到内存中,而不是将整个文件分解。这会降低内存使用率,但速度非常慢

有更好的方法吗

代码示例:

$check=array('lots','of','values','here');
$check=array_flip($check);
$values=explode('|',file_get_contents('bigfile.txt'));

$matches=0;
foreach($values as $key)
if (isset($check[$key])) $matches++;

也许您可以编写自己的PHP的C扩展(参见示例),或者用C编写一个小型实用程序,让PHP运行它(也许使用)

也许您可以编写自己的PHP C扩展(参见示例),或者用C编写一个小的实用程序,让PHP运行它(也许使用)

打开文件并逐行阅读。可能使用MySQL进行导入(加载数据填充)、生成数据或同时使用两者。

打开文件并逐行读取。可能使用MySQL进行导入(加载数据填充)、生成数据或两者兼而有之。

看来您需要一些改进的搜索引擎


Sphinx搜索服务器可用于快速搜索您的值

看来你需要一些改进的搜索引擎


Sphinx搜索服务器可用于快速搜索您的值

对于某种形式的面向键/值的NoSQL数据存储(mongodb、couchdb、Riak)(甚至可能只是一个大型memcache实例),它们似乎是一个经典的解决方案

假设您可以在需要进行搜索之前将大型数据文件加载到数据存储中,并且您将不止一次地使用加载文件中的数据,那么您应该会看到一些令人印象深刻的收益(只要您的查询、mapreduce等不是很糟糕),根据数据的大小来判断,您可能希望查看一个数据存储,它不需要将所有内容都保存在内存中,因此速度很快


我上面提到的每个数据存储都有很多PHP驱动程序(和教程)

对于某种形式的面向键/值的NoSQL数据存储(mongodb、couchdb、Riak)(甚至可能只是一个大型memcache实例),它们似乎是一个经典的解决方案

假设您可以在需要进行搜索之前将大型数据文件加载到数据存储中,并且您将不止一次地使用加载文件中的数据,那么您应该会看到一些令人印象深刻的收益(只要您的查询、mapreduce等不是很糟糕),根据数据的大小来判断,您可能希望查看一个数据存储,它不需要将所有内容都保存在内存中,因此速度很快



我上面提到的每个数据存储都有很多PHP驱动程序(和教程)