Главная | PHP | MYSQL | JavaScript | Joomla | SEO | HTML\CSS | SOFT | Разное | Об авторе | Услуги

PHP. Разбивка большого файла на маленькие.

Автор: Alex Leo | Категория: PHP | Дата: 2011-07-09 07:01:18
Вот уже две недели пишу магазин на joomla 1.5.23 с использованием компонента virtuemart (была 1.1.8, обновилась 1.1.9) . Многое уже написал, многое буду дописывать - т.к я реализую работу магазина с двумя складами (сразу хочу отметить, если вы не программируете на php - то реализовать 2 склада под одним сайтом на virtuemart никак нельзя).

Так вот, сегодня программист 1С выгрузила мне всю нуменклатуру, типы цен, цены, контрагентов и т.д - и я немного испугался )) ... 50 мб. Как же обработать такой большой файл на php (ведь на стандартном сервере стоит ограничения по времени выполнения скрипта от 30 сек до 1 мин.)?

Пришлось его разбить и по кускам скармливать моему скрипту (скрипт тоже пришлось изрядно переписать) и прикрепить к нему redirect (после скармливания небольшой порции файла, он сам себя перезапускает и кушает следующий файл).

Небольшой отрывок кода разбивки файла (Если у кого есть лучше вариант, с удовольствием его здесь опубликую с активной ссылкой на автора):

# Читаем весь фаил обмена
$fh = fopen("1S_to_shop.txt", "r");
$temp_obmen ="";
while (! feof($fh))
{
$temp_obmen.=fgets($fh, 4096);
}
fclose($fh);


##################################################################
# Номенклатура

$temp_array_data = explode('',$temp_obmen);
$temp_array_data = explode('
',$temp_array_data[1]);
$temp_array_data = explode("\n",$temp_array_data[0]);

$temp_size_array = sizeof($temp_array_data).'
';
$temp_name_file_old = 0; $temp_name_file = 0; $temp_data_print = '';
for($i=0;$i<=$temp_size_array;$i++)
{
#Запись в фаил
$temp_name_file = floor($i/$setup_zapisei_in_file);
if( $temp_name_file_old != $temp_name_file)
{
if($temp_name_file <=9){$temp_name_file = '000'.$temp_name_file;}
if(($temp_name_file >=10) AND ($temp_name_file <=99)){$temp_name_file = '00'.$temp_name_file;}
if(($temp_name_file >=100) AND ($temp_name_file <=999)){$temp_name_file = '0'.$temp_name_file;}
$file = fopen ("temp_data/nomenklatyra/".$temp_name_file.".txt","w");
if ($file ){
fputs ( $file, $temp_data_print);
}
fclose ($file);
$temp_data_print ='';
}
$temp_name_file_old = $temp_name_file;

$temp_data_print .= $temp_array_data[$i]."\n";

}
$temp_name_file = floor($i/$setup_zapisei_in_file);
if($temp_name_file <=9){$temp_name_file = '000'.$temp_name_file;}
if(($temp_name_file >=10) AND ($temp_name_file <=99)){$temp_name_file = '00'.$temp_name_file;}
if(($temp_name_file >=100) AND ($temp_name_file <=999)){$temp_name_file = '0'.$temp_name_file;}
$file = fopen ("temp_data/nomenklatyra/".$temp_name_file.".txt","w");
if ($file ){
fputs ( $file, $temp_data_print);
}
fclose ($file);
#################################################################


Совсем недавно надо было перевезти небольшой груз с одного офиса в другой. Ну как небольшой 3 метровая железная, практически монолитная стойка - ох и напарились мы с ней. Сегодня в интернете нашел сайт грузоперевозки, которые за умеренную цену не только перевезут ваш груз, но и упакают его.
Загрузка комментариев...
Оставить комментарий:
Имя:
Email:
URL:
[ Оставить комментарий ]
Следить за новостями:

С кем я работаю:
eTXT - дешевые и качественные тексты, от 15 руб. за рерайт.
GoGetLinks - покупка и продажа вечных ссылок, пожалуй лучший сервис.
GetGoodLinks - покупка и продажа вечных ссылок, цены ниже и неплохое качество.
Sape - покупка и продажа временных ссылок, динозавр на рынке ссылок.
TrustLink - покупка и продажа временных ссылок, хорошая по качеству.
RotaPost - покупка и продажа вечных ссылок, высокие цены и качество.

Войти на сайт:
[ Авторизация ] [ Регистрация ]

Последние комментарии:
123123 : Бесплатная программа - создание карты сайты xml, грабер контента
http://minecraft-cube.ru : Друганчики
Alex Leo : Друганчики
1 : Друганчики
Яндекс.Метрика