Почему я случайно сталкиваюсь с этой фатальной ошибкой с помощью apc (в Yii Framework)? - PullRequest
2 голосов
/ 19 декабря 2011

Иногда я сталкиваюсь с

Fatal error: require() [<a href='function.require'>function.require</a>]: apc_fcntl_lock failed errno:6 in C:\web\yii\framework\web\CWebApplication.php on line 345

контекстом кода:

        else
            $controllerID.='/';
        $className=ucfirst($id).'Controller';
        $classFile=$basePath.DIRECTORY_SEPARATOR.$className.'.php';
        if(is_file($classFile))
        {
            if(!class_exists($className,false))
                require($classFile);  ////////////THIS IS LINE 345
            if(class_exists($className,false) && is_subclass_of($className,'CController'))
            {
                $id[0]=strtolower($id[0]);
                return array(
                    new $className($controllerID.$id,$owner===$this?null:$owner),
                    $this->parseActionParams($route),
                );
            }
            return null;
        }

Относительная среда выполнения:

OS:win2k3.
PHP Version 5.3.6 
Server API  CGI/FastCGI

apc:
Version 3.1.8-dev
APC Debugging   Disabled
MMAP Support    Disabled
Locking type    File Locks
Serialization Support   php
Revision    $Revision: 308812 $
Build Date  Mar 1 2011 13:31:44

Что вызвало эту ошибку?Как мне это исправить?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2014

Кажется, это ошибка тупика apc http://www.searchtb.com/2014/02/apc-lock-php-fpm.html Я спросил об этом одного из сопровождающих apc, он предложил мне использовать opcache вместо apc.

0 голосов
/ 19 декабря 2011

Это похоже на проблему APC, с которой я также время от времени сталкиваюсь. Я не могу сказать вам на 100%, что происходит, но при разработке вы часто меняете, перемещаете или перезаписываете файлы. Похоже, что APC теряет индекс файла, который используется внутри для обработки кэширования байт-кода.

Для меня единственный способ исправить ошибку - перезапустить веб-сервер.

Это также происходит в производственных системах, где вы не очень часто меняете исходный код?

...