У меня есть 36 МБ (ФАЙЛ B) с более чем 650k строк. Я пробовал fgets, fopen, file_get_contents, и они не работают. Я думаю, что у меня заканчивается память. Что я пытаюсь сделать, так это то, что у меня есть файл «A excel (138 строк)», я хочу пройти через него, получить значение и перейти к поиску (через регулярное выражение) его в файле B (.TXT — 35MB). Как только я нашел его в «Файл B», я хочу взять его и записать в «ФАЙЛ А». Я вошел в .ini изменил максимальную память также и таймер (300). fopen () образец ниже:
$handle = fopen("/Users/jerry/Desktop/info.TXT", "r") or die("Couldn't get handle");
if ($handle) { //IF
while (!feof($handle)) { //WHILE
$buffer = fgets($handle, 4096);
// echo $buffer; //displays the 650k lines
for ($row12 = 2; $row12 <= 23; $row12++){ //for1
$name3 = $objPHPExcel45->getActiveSheet()->getCellByColumnAndRow(3, $row12)->getValue() ;
$regex144 = "/$name3/";
preg_match($regex144, $buffer, $try);
foreach ($try as $h => $wer){//foreach
echo $wer; echo $row1; echo "<br>";
// $nameset = $objPHPExcel45->getActiveSheet()->setCellByColumnAndRow(7, $row12)->getValue() ;
}//foreach
}//for 1
}//WHILE
fclose($handle);
}//IF
File_get_contents option:
$htmlfile = "/Users/deepak/Desktop/info.TXT";
$html1 = file_get_contents($htmlfile);
for ($row3 = 2; $row3 <= 50; $row3++){
$name3 = $objPHPExcel45->getActiveSheet()->getCellByColumnAndRow(3, $row3)->getValue() ;
//checking for a initial
if (preg_match($renamewithinitials, $name3, $matchesini)) { //1st if
//flip the name with initials
$names5 = explode(" ", $name3);
$name5 = $names5[2] . " " . $names5[1]. " " . $names5[0];
$length1 = strlen($name5);
$regex1 = "/[0-9]{23}$name5/";
preg_match($regex1, $html1, $t);
foreach($t as $x22 => $x_value22) {
echo "lets see if works LION INITIAL: $x_value22"; echo "<br>";
}
//set in excel under a new column 'flip name'
//$objPHPExcel->getSheet(0)->SetCellValueByColumnAndRow(6, $row3,$name5);
} //1st if
// is there a compnay name
else { //1st else
if (preg_match($renamewithinitials2, $name3, $matchesini2)) { //2nd if
//NO name flipping
$name6 = $name3;
//$objPHPExcel->getSheet(0)->SetCellValueByColumnAndRow(6, $row3, $name6);
} //2nd if
//is there 2 spaces TWO SPACES TWO SPACES ONLY
else { //2nd else
if (preg_match($renamewithTwoSpaces, $name3, $matchesini3)) {//3rd if
//flip name
$names8 = explode(" ", $name3);
$name8 = $names8[1] . " " . $names8[0];
$regextwospace = "/[0-9]{23}$name8/";
preg_match($regextwospace, $html1, $t2space);
foreach($t2space as $x2234 => $x_value2234) {
}
//set in excel under a new column 'flip name'
//$objPHPExcel->getSheet(0)->SetCellValueByColumnAndRow(6, $row3, $name8);
}//3rd if
//is there ONE SPACE ONE SPACE ONLY
else { //3rd else
if (preg_match($renamewithOneSpace, $name3, $matchesini4)) { //4th if
//flip name
$names9 = explode(" ", $name3);
$name9 = $names9[1] . " " . $names9[0];
$regexonespace = "/[0-9]{23}$name9/";
preg_match($regexonespace, $html1, $tonespace);
foreach($tonespace as $x223 => $x_value223) {
}
//set in excel under a new column 'flip name'
//$objPHPExcel->getSheet(0)->SetCellValueByColumnAndRow(6, $row3, $name9);
}//4th if
} //2nd else
} //3rd else
} //1st else
} //for
//}
fclose($html1);
//we save
$objWriter45->save($auctionFileExplodeFinal[0].'-DRD-FILE-copy-nosave.xlsx');
Задача ещё не решена.
Других решений пока нет …