DarkMatter
Новичок
Здравствуйте!
Есть текстовый файл размером 1Гб.
При попытке его отсортировать функцией sort(), пишет, что не хватает озу, хотя его у меня 2Гб и при запуске скрипта 1,8Гб свободно.
Вот эта ошибка:
PHP Fatal error: Allowed memory size of 1694498816 bytes exhausted (tried to allocate 113 bytes) in /var/www/sortData.php on line 8
Вот сам скрипт;
Затем решил его разбить на 2 части по 500Мб. Та же ошибка.
Дальше разбил на 4 части по 250Мб. Та же ошибка.
И когда при разбиении его на 8 частей по 125Мб произошло то же самое, уже решил спросить у других, какими способами возможно решить эту задачу.
Ещё хочу сказать, что недавно использовал этот же скрипт на Windows c 1Гб ОЗУ и спокойно отсортировал файл в 280Мб. Сейчас у меня стоит Ubuntu установлен LAMP.
Есть текстовый файл размером 1Гб.
При попытке его отсортировать функцией sort(), пишет, что не хватает озу, хотя его у меня 2Гб и при запуске скрипта 1,8Гб свободно.
Вот эта ошибка:
PHP Fatal error: Allowed memory size of 1694498816 bytes exhausted (tried to allocate 113 bytes) in /var/www/sortData.php on line 8
Вот сам скрипт;
PHP:
<?php
set_time_limit(0);
ini_set('memory_limit', '1800M');
$fn = '/home/user/data.txt';
$f = fopen($fn,'r') or die('no open file '.$fn);
$arr = array();
while(!feof($f)){
$arr[] = fgets($f);
}
fclose($fn);
sort($arr);
$fsort = fopen('/home/user/sortData.txt','w+') or die('no file fsortData');
foreach($arr as $data){
fwrite($fsort, $data);
}
?>
Дальше разбил на 4 части по 250Мб. Та же ошибка.
И когда при разбиении его на 8 частей по 125Мб произошло то же самое, уже решил спросить у других, какими способами возможно решить эту задачу.
Ещё хочу сказать, что недавно использовал этот же скрипт на Windows c 1Гб ОЗУ и спокойно отсортировал файл в 280Мб. Сейчас у меня стоит Ubuntu установлен LAMP.