Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сохранение указателя
 
 автор: Director_Of_Zoo   (23.04.2007 в 12:59)   письмо автору
 
 

Возможно ли сохранить между сессиями указатель на файл?
Пример:

<?
ignore_user_abort
(true);
set_time_limit(0);
$fp fopen ("имя файла""w");
// делаем монопольный доступ к файлу, т.е. запираем его
// дальше в  цикле происходит чтение из одного файла и запись в выше открытый файл
?>

процедура копирования довольно длительная, и бывает случайно запускается несколько раз. как остановить такой процесс после закрытия окна - не знаю.
Можно ли сохранить как то указатель на файл, чтоб из другого скрипта зайти, разблокировать и закрыть файл?
Указатель на файл как пример привёл, тоже самое касается указателя при открытии сокетов.

   
 
 автор: Trianon   (23.04.2007 в 13:53)   письмо автору
 
   для: Director_Of_Zoo   (23.04.2007 в 12:59)
 

По завершении работы скрипта эти операции выполнятся автоматически.
Файловые дескрипторы принадлежат процессам независимо.

   
 
 автор: Director_Of_Zoo   (23.04.2007 в 14:14)   письмо автору
 
   для: Trianon   (23.04.2007 в 13:53)
 

Тото и оно что по ЗАВЕРШЕНИИ автоматом закрываются все незакрытые процессы. А если копирование будет сутки или двое? никак не забить процесс? Ведь наскока я знаю в линухе убив это файл по фтп не приведёт к убийству самого процесса. Поэтому я и говорю про сохранение дескриптора.

   
 
 автор: Trianon   (23.04.2007 в 15:08)   письмо автору
 
   для: Director_Of_Zoo   (23.04.2007 в 14:14)
 

>Тото и оно что по ЗАВЕРШЕНИИ автоматом закрываются все незакрытые процессы.
По завершении процесса автоматом закрываются все файлы, открытые этим процессом.


>А если копирование будет сутки или двое?
Вы же сами отключили ограничение на время исполнения процесса?

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


>Ведь наскока я знаю в линухе убив это файл по фтп не приведёт к убийству самого процесса.

Вы путаете причину и следствие. Завершение процесса приводит к закрытию файла, а не наоборот. Потому что файл открыт в рамках процесса, открывшего его, а не абстрактно - откупорен/закуперен. "Файл F открыт процессом P" означает, что на данный момент имеется некто P, с этим F активно что-то делающий.
Вы же предполагаете что придет Q, вмешается, и за P с ним (с F) что-то сделает. Максимум, что он сможет сделать - это грохнуть самого P, если хватит привилегий.

>Поэтому я и говорю про сохранение дескриптора.

Дескриптор бесполезно сохранять. За пределами контекста процесса он теряет всякий смысл.

   
 
 автор: Director_Of_Zoo   (23.04.2007 в 21:15)   письмо автору
 
   для: Trianon   (23.04.2007 в 15:08)
 

Что же уважаемый Trianon посоветует? как быть в таком случае?

   
 
 автор: bronenos   (23.04.2007 в 21:20)   письмо автору
 
   для: Director_Of_Zoo   (23.04.2007 в 21:15)
 

если я прально понял - так и открывать его когда нужно

   
 
 автор: Trianon   (23.04.2007 в 21:23)   письмо автору
 
   для: Director_Of_Zoo   (23.04.2007 в 21:15)
 

Если вас беспокоит то, что в один и тот же файл начинают лезть сразу два процесса - обеспечьте проверку существования процесса.

Проверяйте существование файла (1) перед тем, как открывать его.
Алгоритм может быть примерно таким:

Если файл уже создан, значит с ним уже работают, выходим.
Если нет - создаем файл с временным именем - и начинаем в него писать данные.
По завершении копирования файла, переименовываем или переносим его на постоянное место дислокации.
(1) проверять надо именно временное имя. Пока файл с таким именем имеет место быть - идет процесс копирования.

   
 
 автор: Director_Of_Zoo   (24.04.2007 в 10:32)   письмо автору
 
   для: Trianon   (23.04.2007 в 21:23)
 

Так как сам процесс копирования остановить?
я понимаю что и как определить есть ли копирование. Но вот вопрос - как его остановить? Мне не надо писать в файл кучей процессов, мне надо обеспечить возможность остановить копирование.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования