or return

PhpGuest

Guest
or return

как это правильно на php написать?

$f=fopen(...) or return '...' ?

и еще какая функция возвращает true если $f - это файловый дискриптор что то типа is_...?

и ввобще, какой тип имеет файловый дискриптор после открытия файла?
 

tony2001

TeaM PHPClub
PHP:
$f=fopen(...);
if ($f) {
 // $f - файловый дескриптор (а что еще по-вашему может вернуть fopen, кроме него и false?)
}
else {
 // $f === false, ошибка при открытии файла
}
 

XtremallyPurpur

Новичок
Можно так:
PHP:
$filename = '/path/to/foo.txt'; 

if (file_exists($filename)) { 
   $f=fopen($filename,"r"); 
} else { 
   return('Файл не существует!');
}
 

XtremallyPurpur

Новичок
tony2001
точно :) мой код не проверяет на права доступа,
тогда так:
PHP:
$filename = '/path/to/foo.txt';

if (is_readable($filename)) {
   $f=fopen($filename,"r");
} else {
   return('Файл не существует!');
}
function is_readable()
Returns TRUE if the filename exists and is readable.
 

гоша

Guest
PhpGuest

> возвращает true если $f - это файловый дискриптор что то типа is_...?

[m]is_resource[/m]

> и ввобще, какой тип имеет файловый дискриптор после открытия файла?

[m]var_dump[/m] is your friend

tony2001

а кто сказал, что файл открывается именно на чтение?..
и что открывается вообще файл, а не что-то другое... ;)
 

PhpGuest

Guest
Автор оригинала: tony2001
PHP:
$f=fopen(...);
if ($f) {
 // $f - файловый дескриптор (а что еще по-вашему может вернуть fopen, кроме него и false?)
}
else {
 // $f === false, ошибка при открытии файла
}
ну я так понял вот это самое грамотное решение?
 

XtremallyPurpur

Новичок
si
после file_exists другой процесс моет файл удалить

Как бороться, ведь flock() блокирует по дескриптору уже открытый файл?

-~{}~ 24.02.04 16:37:

PhpGuest
?@

Щаз фанат тебе про собак ответит :)
 

si

Administrator
Как бороться, ведь flock() блокирует по дескриптору уже открытый файл?
$fp = @fopen();

if (!$fp){
die("Can not open file");
}

к томуже если другой процес не сделает flock, то он сможет удалить и залоченый файл
 
Сверху