Форум сетевых администраторов
Показаны 2 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- flock и gzopen не совместимы? (http://netadmin.ws/forum/showthread.php?threadid=7043)


Помещено Andrej 12-11-2003 в 01:03:

flock и gzopen не совместимы?

Есть функция для разархивирования gz архивов:


PHP:


function uncompress ($srcname) { 
  
$zp = gzopen($srcname, 'r'); 
  
flock($zp, LOCK_SH); 
  while (!
gzeof($zp)) $string .= gzread($zp, 4096); 
  
flock($zp, LOCK_UN); 
  
gzclose ($zp); 
  return 
$string; 
}



Если передать в эту функцию файл *.gz, PHP ругается следующим образом:

Warning: flock(): supplied resource is not a valid File-Handle resource in e:\localhost\gz.php on line 6

или

Warning: flock(): cannot represent a stream of type ZLIB as a File Descriptor in e:\localhost\gz.php on line 6

6 строка:

PHP:

flock
($zp, LOCK_SH);




Warning: flock(): supplied resource is not a valid File-Handle resource in e:\localhost\gz.php on line 8

или

Warning: flock(): cannot represent a stream of type ZLIB as a File Descriptor in e:\localhost\gz.php on line 8

8 строка:

PHP:

flock
($zp, LOCK_UN);




Где грабли?

__________________
f9ffe3323e79b2a558b92af5b4039e20


Помещено GenUS 12-11-2003 в 17:39:

Warning: flock(): supplied resource is not a valid File-Handle resource in e:\localhost\gz.php on line 6 - тобиш неправильный указатель ($zp) передается ф-ции flock().
Ф-ции flock() нужен указатель от ф-ции fopen().
Тоесть получается:

PHP:


function uncompress ($srcname) { 
  
$file = fopen($srcname, 'r');
  
$zp = gzopen($srcname, 'r'); 
  
flock($file, LOCK_SH); 
  while (!
gzeof($zp)) $string .= gzread($zp, 4096); 
  
flock($file, LOCK_UN); 
  
gzclose ($zp); 
  return 
$string; 
}



ЗЫ: На работоспособность не проверял ...

__________________
.


Формат времени GMT. Текущее время 10:48.
Показаны 2 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.