Re: Can't modify constant item in lock
От: King Oleg Украина http://kingoleg.livejournal.com
Дата: 15.03.04 12:53
Оценка: +1
Здравствуйте, johneeee, Вы писали:

J>Доброго времени суток!


J>ActivePerl 5.8.3 под Windows упорно не хочет корректно вызывать lock. Например, есть код:


J>
J>        open(FILE, "$boardsdir/$currentboard.dat") || error("$err{'001'} $boardsdir/$currentboard.dat");
J>        lock(FILE);
J>        chomp(@boardinfo=<FILE>);
J>        unlock(FILE);
J>        close(FILE);

J>


J>И при попытке вызвать скрипт выдается такое сообщение об ошибке:


J>Can't modify constant item in lock at g:\site2\apache\htdocs\cgi-bin\admin\banners\view.cgi line 91, near "FILE)"

J>

J>Если кто знает, объясните, пожалуйста, в чем тут дело? Если просто закомментировать lock, то скрипт работает, но это как-то криво...

J>В общем-то, это WebApp 0.9.9, если кому интересно. У него в настройках есть отключение каких-то lock, но эта опция не влияет на данную ошибку.



На сколько я знаю, flock() реализован одинаково в Perl и в PHP — вызовом системной функцией. Вот что по этому поводу говорит документация к ПХП:

Warning
flock() will not work on NFS and many other networked file systems. Check your operating system documentation for more details.

On some operating systems flock() is implemented at the process level. When using a multithreaded server API like ISAPI you may not be able to rely on flock() to protect files against other PHP scripts running in parallel threads of the same server instance!

flock() is not supported on antiquated filesystems like FAT and its derivates and will therefore always return FALSE under this environments (this is especially true for Windows 98 users).

Скорее всего, то же верно и для Perl.
King Oleg
*Читайте DOC'и, они rules*
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.