编程语言
首页 > 编程语言> > 从php [copy]中的csv文件中读取大数据

从php [copy]中的csv文件中读取大数据

作者:互联网

参见英文答案 > file_get_contents => PHP Fatal error: Allowed memory exhausted                                    3个
我正在读csv&用mysql检查记录是否存在于我的表中或不存在于php中.

csv有大约25000条记录&当我运行我的代码时,它在2分10秒后显示“服务不可用”错误(onload:2m 10s)

这里我添加了代码

// for set memory limit & execution time
ini_set('memory_limit', '512M');
ini_set('max_execution_time', '180');

//function to read csv file
function readCSV($csvFile)
{
    $file_handle = fopen($csvFile, 'r');
    while (!feof($file_handle) ) {

       set_time_limit(60); // you can enable this if you have lot of data

       $line_of_text[] = fgetcsv($file_handle, 1024);
   }
   fclose($file_handle);
   return $line_of_text;
 }

// Set path to CSV file
$csvFile = 'my_records.csv';

$csv = readCSV($csvFile);

for($i=1;$i<count($csv);$i++)
{
   $user_email= $csv[$i][1];

   $qry = "SELECT u.user_id, u.user_email_id FROM tbl_user as u WHERE u.user_email_id = '".$user_email."'";

   $result = @mysql_query($qry) or die("Couldn't execute query:".mysql_error().''.mysql_errno());

   $rec = @mysql_fetch_row($result);

   if($rec)
   {
      echo "Record exist";
   }
   else
   {
      echo "Record not exist"; 
   }
}

注意:我只想列出我表中不存在的记录.

请建议我解决这个问题……

解决方法:

处理大文件的一种很好的方法是:https://stackoverflow.com/a/5249971/797620

此方法在http://www.cuddlycactus.com/knownpasswords/(页面已被删除)中使用,仅在几毫秒内搜索1.7亿个密码.

标签:large-data,php,csv
来源: https://codeday.me/bug/20190919/1812216.html