|
|
|
| Вем привет
Проблема следущая: уменя на хостинге лежит медиа файл необходимо его порезать по 10 мб и положить эти части в туже директорию где лежит файл
Как прочитать файл с 0 кбайт до 10 000 и записать в файл1.txt
как прочитать файл с 10 000 кб и записать в файл2.txt и т.д | |
|
|
|
|
|
|
|
|
для: cheops
(12.09.2006 в 18:29)
| | cheops
спасибо за скрипт рабоет нормально, но с большиим файлами(~500мб) возникает проблема т.к. буфер у хостинга не предусмотрен на такой размер, тут же возникает вопрос: как можно сделать чтобы скрипт читал сперва один кусок к примеру 100 мб сбрасывал его в файл потом чистил буфер, а потом следующий? | |
|
|
|
|
|
|
|
для: pav
(24.09.2006 в 10:56)
| | Если работа ведётся с такими большими файлами следует идти через связку fopen() + fget() вместо функции file_get_contents(). Функция fget() в цикле читает файл по строчно. Вам обязательно, чтобы все файлы были одинакового размера или можно, чтобы каждый из них содержал, скажем по 1000 строк? | |
|
|
|
|
|
|
|
для: cheops
(24.09.2006 в 13:24)
| | cheops
Желательно чтобы куски были в пределах от 5-8 мб но я думаю можно этого добится определенным количеством строк, если Вы знаете как это реализовать и Вас не затруднит приведите здесь код. | |
|
|
|
|
|
|
|
для: pav
(24.09.2006 в 14:09)
| | Можно поступить следующим образом
<?php
// Имя файла
$filename = "linux.words";
// Строк в одном файле
$numberlines = 1000;
// Считаем сколько строк в файле
$fd = fopen($filename, "r");
$count = 0;
while(!feof($fd))
{
$line = fgets($fd);
$count++;
}
// Устанавливаем файловый курсор в начало
rewind($fd);
// Разбиваем файл на куски
$old = "part.".sprintf("%04d",0);
$pt = fopen($old, "w");
for($i = 0, $j = 0; $i < $count; $i++, $j++)
{
$numberfiles = $i/$numberlines;
$name = "part.".sprintf("%04d",$numberfiles);
if($old != $name)
{
fclose($pt);
$pt = fopen($name, "w");
}
$line = fgets($fd);
fwrite($pt,$line);
$old = $name;
}
fclose($fd);
?>
|
При помощи переменной $numberlines отрегулируйте количество строк в файлах-частях, так чтобы у вас получались куски удобного размера. | |
|
|
|
|
|
|
|
для: cheops
(24.09.2006 в 14:38)
| | cheops
Все работает отлично! Большое спасибо за помощь! | |
|
|
|