| |
|
|
| | Доброго времени суток!
С помощью вот этого кода, копироую один файл, в другой!
//----------------------------------------------------
$filename = 'base/counter.dat';
$filename2 = 'base/counter_copy.dat';
if(filesize($filename)>2000){
copy ( $filename, $filename2);
}
//---------------------------------------------------
И вот, появился вопрос, как копируемый файл, заблокировать?
Flock(), блокирует только открытый файл, а открывать файл, мне не хотелось бы!
Блокировать, мне нужно обязательно, так как в момент копирования, может происходить запись в файл! Но вот как заблокировать, я не знаю!
Или может, будут другие предлажения, как делать резервную копию? | |
| |
|
|
| |
|
|
| |
для: Diablo_
(01.05.2006 в 02:45)
| | | Попробуйте с помощью .htaccess...Создайте новую папку с файлами, которые необходимо защитить и напишите в .htaccess:
или можно сделать запрет для всех, кроме опр. IP:
order deny,allow
deny from all
allow from 000.000.000.000
|
Файлы будут только для include доступны... | |
| |
|
|
| |
|
|
| |
для: Unkind™
(01.05.2006 в 09:34)
| | | Кажется, это чуть-чуть не то! Мне нужно заблокировать файл на некоторое время, а не ан постоянной основе!
Мне просто нужно, что бы происходило так: блокировка->копироваине(вообще, какое-либо действие)->разблокировка! | |
| |
|
|
| |
|
|
| |
для: Diablo_
(01.05.2006 в 12:23)
| | | Подскажите хоть, ждёт ли функчия copy, когда файл будет разблокирован? | |
| |
|
|
| |
|
|
| |
для: Diablo_
(01.05.2006 в 23:39)
| | | По моему нет - ждут файл только те потоки, которые участвуют в блокировке и сами блокируют файл. | |
| |
|
|
| |
|
|
| |
для: cheops
(02.05.2006 в 11:40)
| | | А чего тогда делать??? | |
| |
|
|
| |
|
|
| |
для: Diablo_
(02.05.2006 в 15:48)
| | | Проверяйте блокирован ли файл, и вводите блокировку перед использованием яункция copy(). | |
| |
|
|
| |
|
|
| |
для: cheops
(02.05.2006 в 16:14)
| | | А можно пример? | |
| |
|
|
|
| |
|
|
| |
для: cheops
(02.05.2006 в 23:23)
| | | Получается, что бы заблокировать файл при копировании, он должен быть открыт! А зачем мне это нужно!
Вот код:
<?php
if(@$_REQUEST["id"])
{
$arr = file("base/counter.dat");
$fp = fopen("base/counter.dat", "a");
ftruncate($fp, 0);
$id = @$_REQUEST["id"];
for ($i=0; $i<count($arr); $i++)
{
list($link, $counter) = explode("|", str_replace ("\n", "", $arr[$i]));
if ($link == $id)
{
$counter += 1;
}
flock($fp, LOCK_EX);
if(flock($fp, LOCK_EX)){
fwrite($fp, $link."|".$counter."\n");
flock($fp, LOCK_UN);
}
fclose($fp);
}}
//--------------------------------------------------------------------
$filename = 'base/counter.dat';
$filename2 = 'base/counter_copy.dat';
if(flock($fp, LOCK_EX)){
if(filesize($filename)>2000){
copy ( $filename, $filename2);
}}
else sleep(1);
//--------------------------------
?>
|
Выдаёт ошибку в 26 строке!
Notice: Undefined variable: fp in c:\easyphp1-8\www\1\include\counter_click.inc on line 26
Warning: flock(): supplied argument is not a valid stream resource in c:\easyphp1-8\www\1\include\counter_click.inc on line 26 | |
| |
|
|