Как проще сделать перезапись рабочих файлов?

Gang

Client
Регистрация
04.04.2010
Сообщения
577
Благодарностей
313
Баллы
63
Часто в шаблонах нужно чтоб логины или прокси шли зациклено. Например ставлю я взять прокси с удалением, и так пока файл с прокси не будет пустым, но мне нужно чтобы он хотя и брал все прокси по очереди, но чтоб не удалял.
Понимаю, что если не синхронизировать список или таблицу с файлом, то файл будет не тронут, а будет работать только список.

Но как быть при многопоточном режиме?

Вот тут http://wiki.zennolab.com/doku.php?id=ru:project_maker:%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B:%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0:%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B&s[]=%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0
прочитал следующее
Обратите внимание !!!
Когда вы используете синхронизацию с файлом, то таблица для всех потоков одна и все изменения в любом потоке отображаются в таблице!
Если вы не используете синхронизацию с файлом, то для каждого потока будет создаваться своя копия таблицы. В этом случае при удалении сроки таблицы в одном потоке в других потоках таблица не изменится.
Если у вас большие файлы, используйте синхронизацию с файлом, иначе будет тратиться много оперативной памяти
А мне нужно чтоб при многопоточном режиме была одна таблица или список, чтоб все потоки только с ней работали, с удалением строк. Но когда она станет пустой, чтоб начальные данные опять перезаписывались и все шло по кругу.

Я конечно немного покумекал и сделал свой вариант. Но чето мне кажется что ерундой я маюсь и есть вариант попроще.

Вот как я делаю:
1. Сначала помещаю исходные данные (например прокси) во временный файл, путем копирования с оригинального.
2. Перед этим ставлю проверку, есть ли временный файл? Если есть, идем дальше, если нет создаем. Сделано для того чтоб каждый поток не копировал этот файл при каждой новой итерации.
3. Дальше проверяю, если файл с проксями пустой, идем и перезаписываем прокси с временного файла который мы создали вначали в оригинальный. Делаю путем создания списка с привязкой к данному временному файлу, и использую екшен сохранения списка в файл.
4. Удаляем временный файл с проксями.
5. Все файл с проксями перезаписан, скрипт продолжает работу.

Даю скрин со своего шаба где данная логика реализована. http://piccy.info/view3/6770402/c8e2a3fc3836bb928d517ab7f94cf0f3/

Но это так геморрно шо капец! Есть вариант попроще реализовать подобную логику? Буду благодарен за помощь!
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 703
Баллы
113
А мне нужно чтоб при многопоточном режиме была одна таблица или список, чтоб все потоки только с ней работали, с удалением строк. Но когда она станет пустой, чтоб начальные данные опять перезаписывались и все шло по кругу.
1) Берете строку с удалением
2) Выполняете действия
3) В конце шаблона записываете строку в конец списка/таблицы
 

Gang

Client
Регистрация
04.04.2010
Сообщения
577
Благодарностей
313
Баллы
63
1) Берете строку с удалением
2) Выполняете действия
3) В конце шаблона записываете строку в конец списка/таблицы
ёле пале)) я чуствовал что где-то тут собака зарыта. Огромное спасибо. Другой раз прежде чем велосипед изобретать. спрошу тут)
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 703
Баллы
113
гы :az:
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)