Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 09 Февраль, 2012, 07:30:11

Страниц: [1] 2
Печать
Автор Тема: прочитать из файла, прибавить, перезаписать  (Прочитано 522 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ivanscm    ↓ 
27 Август, 2010, 08:16:08
НЕ ХУЕТА! ХУЕТА!

Синий властилин
Группа: Джедаи

Карма: 9
Сообщений: 1049
Сила слова: 0.86

в общем в своем скрипте, точнее модуле довнлоадера мне надо подсчитывать трафик :) решил просто - у меня закачка идет по очереди, и после скачки каждого файла решил писать в файл: прежнее значение + размер скаченого. сайз верный, он пишется в БД в информации о файле. подсчет места на диске не тот вариант, и сумма полей в БД так как эта информация удаляется и тп. сцуко убейте меня:
PHP
$file_traffic = fopen($_SERVER['DOCUMENT_ROOT']."/work_status/incoming_traffic.sys", "r+");
$traffic = fgets($file_traffic);
$traffic += $size;
fwrite($file_traffic, $traffic);
fclose($file_traffic);

05811118473545811120321435.8111184735458E+235.8111184735458E+475.8111184735458E+2595.8111184735458E+2595.8111184735458E+2595.8111184735458E+2595.8111184735458E+2595.8111184735458E+2595.8111184735458E+2595.8111184735458E+259
Записан


На этом форуме я должен 5 бачей МД5 и 500 рур Кафе.
ПЫХА Я ТЕБЯ ЛЮБЛЮ!
adw0rd    ↓ 
27 Август, 2010, 08:44:12 , спустя 28 минут 4 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Джедаи

Карма: не нужна
Сообщений: 17221
Сила слова: 1.65

нифига не понял...
покажи формат хранения данных
 
"прежнее значение" - это прошлый "размер скаченого"?
Спустя 42 секунды добавил
сайз верный, он пишется в БД в информации о файле.
БД тут причем? Ты же в файлы все пишешь
Спустя 10 секунд добавил
Пятница...
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
Nyaah    ↓ 
27 Август, 2010, 08:47:14 , спустя 3 минуты 2 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи

Карма: 31
Сообщений: 479
Сила слова: 6.47

PHP
$file_traffic = fopen($_SERVER['DOCUMENT_ROOT']."/work_status/incoming_traffic.sys", "r+");
flock($file_traffic, LOCK_EX);
$traffic = fgets($file_traffic);
$traffic += $size;
ftruncate($file_traffic, 0);
fseek($file_traffic, 0, SEEK_SET);
fwrite($file_traffic, $traffic);
fflush($file_traffic);
flock($file_traffic, LOCK_UN);
fclose($file_traffic);
Записан

Work, buy, consume, die
ivanscm    ↓ 
27 Август, 2010, 08:50:33 , спустя 3 минуты 19 секунд
НЕ ХУЕТА! ХУЕТА!

Синий властилин
Группа: Джедаи

Карма: 9
Сообщений: 1049
Сила слова: 0.86

PHP
$size = GetUrlSize($row['url']);
$file_traffic = fopen($_SERVER['DOCUMENT_ROOT']."/work_status/incoming_traffic.sys", "r+");
$traffic = fgets($file_traffic);
$traffic = $traffic + $size;
fwrite($file_traffic, $traffic);
fclose($file_traffic);
 
mysql_query("UPDATE `files` SET `size`= '{$size}', `status`= 'runload' WHERE `id` = '{$row['id']}'");
// качаем
$temp_name = md5($row['url']);
$ch = curl_init($row['url']);
$fp = fopen("../files/".$temp_name, "w");
curl_setopt($ch, CURLOPT_FILE, $fp);...
та никакого формата, эдво. тупо число. прошлое. прошлый траффик. файл готовим для скачки, узнаем размер, считываем с файла, прибавляем, перезаписываем. качаем.
Спустя 44 секунды добавил
Nyaah, нах лочить. файлы по очереди качаются. скрипт сам себя запускает :)
Спустя 51 секунду добавил
Еще по пальцам покажи что как?
Записан


На этом форуме я должен 5 бачей МД5 и 500 рур Кафе.
ПЫХА Я ТЕБЯ ЛЮБЛЮ!
Nyaah    ↓ 
27 Август, 2010, 08:52:57 , спустя 2 минуты 24 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи

Карма: 31
Сообщений: 479
Сила слова: 6.47

Лочить надо всегда, это сейчас ты думаешь, что доступ к файлу будет иметь только один процесс, а потом куяг и все сдохло. Сам просто пару раз сталкивался, тоже думал нах лочить...
Записан

Work, buy, consume, die
888eug    ↓ 
27 Август, 2010, 08:53:37 , спустя 40 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 14
Сила слова: 0

Вытаскивай значение в переменную и складывай с $traffic
Записан
ivanscm    ↓ 
27 Август, 2010, 08:54:54 , спустя 1 минуту 17 секунд
НЕ ХУЕТА! ХУЕТА!

Синий властилин
Группа: Джедаи

Карма: 9
Сообщений: 1049
Сила слова: 0.86

ясно прислушаемся. ща опробуем.
а надо
PHP
(int)$traffic = fgets($file_traffic);
не?
Спустя 19 секунд добавил
888eug, ну я чего и делаю.
Спустя 31 секунду добавил
чесно слово, с файлами первый раз работаю :)
Записан


На этом форуме я должен 5 бачей МД5 и 500 рур Кафе.
ПЫХА Я ТЕБЯ ЛЮБЛЮ!
Nyaah    ↓ 
27 Август, 2010, 08:59:13 , спустя 4 минуты 19 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи

Карма: 31
Сообщений: 479
Сила слова: 6.47

в смысле что как?
PHP
$file_traffic = fopen($_SERVER['DOCUMENT_ROOT']."/work_status/incoming_traffic.sys", "r+");
 
// лочим на чтение, после этого дотуп к файлу будет иметь только наш скрипт
flock($file_traffic, LOCK_EX);
$traffic = fgets($file_traffic);
$traffic += $size;
 
// делаем размер файла равным 0
ftruncate($file_traffic, 0);
 
// переводим курсор на начало фала
fseek($file_traffic, 0, SEEK_SET);
fwrite($file_traffic, $traffic);
 
// скидываем записанные данные на диск
fflush($file_traffic);
 
// снимаем блокировку
flock($file_traffic, LOCK_UN);
fclose($file_traffic);
Устественно по хорошему нужно все проверять, поставилась ли блокировка, очистился ли файл и тп
Спустя 1 минуту 54 секунды добавил
ясно прислушаемся. ща опробуем.
а надо
PHP
(int)$traffic = fgets($file_traffic);
не?
если уверен, что в файле уже есть число, то
$traffic = doubleval(fgets($file_traffic));
я так понял, что ты размер указываешь в байтах, значит инта не хватит, нужно число с плавающей точкой юзать
Записан

Work, buy, consume, die
ivanscm    ↓ 
27 Август, 2010, 08:59:53 , спустя 40 секунд
НЕ ХУЕТА! ХУЕТА!

Синий властилин
Группа: Джедаи

Карма: 9
Сообщений: 1049
Сила слова: 0.86

Nyaah, да верно, байты
Спустя 17 секунд добавил
+ ушел в репу
Записан


На этом форуме я должен 5 бачей МД5 и 500 рур Кафе.
ПЫХА Я ТЕБЯ ЛЮБЛЮ!
888eug    ↓ 
27 Август, 2010, 09:03:49 , спустя 3 минуты 56 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 14
Сила слова: 0

у тебя похоже выводится как строка. Попробуй поставить  вместо
$traffic += $size;
это
$traffic = float ($traffic + $size);
Записан
ivanscm    ↓ 
27 Август, 2010, 09:05:21 , спустя 1 минуту 32 секунды
НЕ ХУЕТА! ХУЕТА!

Синий властилин
Группа: Джедаи

Карма: 9
Сообщений: 1049
Сила слова: 0.86

888eug, спасибо, но вроде работает по первому варианту :)
Спустя 21 секунду добавил
гы 404
Записан


На этом форуме я должен 5 бачей МД5 и 500 рур Кафе.
ПЫХА Я ТЕБЯ ЛЮБЛЮ!
Givi    ↓ 
28 Август, 2010, 12:00:38 , спустя 2 часа 55 минут 17 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 42
Сообщений: 2248
Сила слова: 1.87

а чего не сделать: $size = file_get_contents('tru-lya-lya.txt') -> к полученному/старому значению добавляем нынешнее ($size + $size_now) -> file_put_contents('tru-lya-lya.txt',$size) ?
Записан

Все, что говорят другие - неправда! До тех пор, пока ты сам в это не поверишь.
Если человек дурак, то... чур это не я!
ivanscm    ↓ 
28 Август, 2010, 10:20:53 , спустя 10 часов 20 минут 15 секунд
НЕ ХУЕТА! ХУЕТА!

Синий властилин
Группа: Джедаи

Карма: 9
Сообщений: 1049
Сила слова: 0.86

Givi, хм. интересно. прям как на израильском форуме :) надо почитать ман.
Записан


На этом форуме я должен 5 бачей МД5 и 500 рур Кафе.
ПЫХА Я ТЕБЯ ЛЮБЛЮ!
Givi    ↓ 
28 Август, 2010, 02:20:56 , спустя 4 часа 3 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 42
Сообщений: 2248
Сила слова: 1.87

ivanscm, а с чего сравнение с израильским форумом?
А ман таки почитай, мне данные функции очень нравятся.
Записан

Все, что говорят другие - неправда! До тех пор, пока ты сам в это не поверишь.
Если человек дурак, то... чур это не я!
ivanscm    ↓ 
28 Август, 2010, 03:36:46 , спустя 1 час 15 минут 50 секунд
НЕ ХУЕТА! ХУЕТА!

Синий властилин
Группа: Джедаи

Карма: 9
Сообщений: 1049
Сила слова: 0.86

может помнишь я в анекдотах выкладывал про форумы. израильский - вопросом на вопрос. на русском вопрос - афтар мудаг
Записан


На этом форуме я должен 5 бачей МД5 и 500 рур Кафе.
ПЫХА Я ТЕБЯ ЛЮБЛЮ!
Страниц: [1] 2
Печать
 

Перейти в: