| 
<?phpdefine('IN_SOFT', true);
 define('NOTCONNECTED', true);
 
 define('CODE_CREATEUR', 27);
 
 include('./text_file.class.php');
 
 set_time_limit(0);
 /*
 $file = fopen('./allCountries.txt', 'r');
 $res = fread($file, 1024 * 1024 * 50);
 fclose($file);
 
 $file = fopen('./piece_allCountries.txt', 'w');
 fwrite($file, $res);
 fclose($file);
 */
 
 // piece_allCountries.txt is build on the 1st 50 MO of allCountries.txt file
 // @see: http://download.geonames.org/export/dump/
 
 if(in_array('-1', $argv))
 {
 // load the file onto memory
 $aTheLines = file('./piece_allCountries.txt');
 var_dump(memory_get_usage() / (1024 * 1024)); // -> float(147.34832763672)(MO)
 
 $start = microtime(true);
 // access all the line(s) (Fastest but not memory optimized, for lazy (or small file))
 foreach($aTheLines as $line)
 {
 // do something with line...
 
 // var_dump(memory_get_usage() / (1024 * 1024)); // -> float(147.34832763672)(MO)
 // never decrease neither increase
 }
 echo 'All lines read in: ' . (microtime(true) - $start) . "\n";
 var_dump(memory_get_usage() / (1024 * 1024)); // -> float(147.34832763672)(MO)
 }
 else if(in_array('-2', $argv))
 {
 // load the file onto memory
 $aTheLines = file('./piece_allCountries.txt');
 var_dump(memory_get_usage() / (1024 * 1024)); // -> float(147.34832763672)(MO)
 
 $start = microtime(true);
 // access all the line(s) (memory optimized but slowest)
 for($i = 0 ; $i < count($aTheLines) ; $i++)
 {
 // do something with line -> $aTheLines[$i]
 
 // then we remove the line we juste used to release some memory
 unset($aTheLines[$i]);
 
 // var_dump(memory_get_usage() / (1024 * 1024)); // -> float(147.34832763672) (MO)
 // slightly decrease
 }
 echo 'All lines read in: ' . (microtime(true) - $start) . "\n";
 
 var_dump(memory_get_usage() / (1024 * 1024)); // -> float(72.710220336914)(MO)
 }
 else if(in_array('-3', $argv))
 {
 // $file_path = './allCountries.txt';
 $file_path = './piece_allCountries.txt';
 
 $txtFile = new CTextFile();
 if(!$txtFile->Open($file_path))
 {
 echo 'Impossible d\'ouvrir le fichier: ' . $file_path . "\n";
 return false;
 }
 var_dump(memory_get_usage() / (1024 * 1024)); // -> < 1MO
 
 $txtFile->SetBufferLength(10 * 1024); // 10Ko
 
 // $txtFile->SetLineFeed("\r"); // under Mc -> eq: Set MacintoshLineFeed
 // $txtFile->SetLineFeed("\r\n"); // under windows -> eq: SetWindowsLineFeed
 $txtFile->SetLineFeed("\n"); // under linux -> eq: SetLinuxLineFeed
 
 $line = 1;
 $start = microtime(true);
 while($txtFile->Eof() === false)
 {
 $txtFile->ReadLine();
 // echo $txtFile->ReadLine() . "\n";
 
 if( ($line % 100000) == 0) // display the memory usage every 100000 lines
 {
 echo "\t";
 var_dump(memory_get_usage() / (1024 * 1024)); // -> < 1MO
 }
 
 $line++;
 }
 echo 'All lines read in: ' . (microtime(true) - $start) . "\n";
 var_dump(memory_get_usage() / (1024 * 1024)); // -> < 1MO
 
 $txtFile->Close();
 }
 else if(in_array('-4', $argv))
 {
 // test with a custom line separator
 $file_path = './text_file.class.php';
 
 $txtFile = new CTextFile();
 if(!$txtFile->Open($file_path))
 {
 echo 'Impossible d\'ouvrir le fichier: ' . $file_path . "\n";
 return false;
 }
 
 $txtFile->SetLineFeed('qwerty'); // fake line feed -> The whole file should be read...
 $txtFile->SetBufferLength(512); // 10 chars
 
 $line = 1;
 $start = microtime(true);
 while($txtFile->Eof() === false)
 {
 echo $txtFile->ReadLine() . "\n";
 $line++;
 }
 echo 'All lines read in: ' . (microtime(true) - $start) . "\n";
 var_dump(memory_get_usage() / (1024 * 1024)); // -> < 1MO
 
 $txtFile->Close();
 }
 else if(in_array('-5', $argv))
 {
 include('./textfilereader.class.php'); // By Hamid Ghorashi
 
 // $file_path = './allCountries.txt';
 $file_path = './piece_allCountries.txt';
 var_dump(memory_get_usage() / (1024 * 1024)); // -> < 1MO
 
 $test = new TextFileReader($file_path);
 
 $line = 1;
 $start = microtime(true);
 $res = $test->readLine();
 while($res != NULL)
 {
 if( ($line % 100000) == 0) // display the memory usage every 100000 lines
 {
 echo "\t";
 var_dump(memory_get_usage() / (1024 * 1024)); // -> < 1MO
 }
 
 $line++;
 
 $res = $test->readLine();
 }
 echo 'All lines read in: ' . (microtime(true) - $start) . "\n";
 var_dump(memory_get_usage() / (1024 * 1024)); // -> < 1MO
 }
 TextFileReader
 
 ?>
 |