Categorías
DoctrineORM

Cómo corregir el Warning «rename /app/…ProxyGenerator.php» en DoctrineORM

Desarrollando una API con Apigility (Zend Framework 2 + Doctrine), comencé a recibir un error como este:

( ! ) Warning: rename(/app/cache/dev/doctrine/orm/Proxies\__CG__MyCommonBundleEntityVisibilityInformation.php.53c3cccd0a5415.53070441,/app/cache/dev/doctrine/orm/Proxies\__CG__MyCommonBundleEntityVisibilityInformation.php): in \vendor\doctrine\common\lib\Doctrine\Common\Proxy\ProxyGenerator.php on line 30

El asunto ocurre porque la generación automática de proxies sobrecarga la aplicación y la hace fallar. Por esta razón el error aparece de forma intermitente y es difícil de replicar. La configuración para evitar que se generen los proxies automáticamente es la siguiente (en el archivo module/NombreDelMódulo/config/module.config.php):

 'doctrine' => array(
   'configuration' => array(
     'orm_default' => array(
       'filters' => array(),
       'generate_proxies' => false,
     ),
   ),
   ...

Por otra parte, al deshabilitar la generación automática de proxies, es necesario generarlos manualmente cada vez que se hagan cambios en la API. Esta debería de ser la configuración para producción, para garantizar un desempeño adecuado. El comando para generar los proxies es:

doctrine orm:generate-proxies

Gente importante que está lidiando con el tema: https://github.com/doctrine/common/issues/327

Detalles de la configuración de Doctrine: https://github.com/doctrine/DoctrineORMModule/blob/master/config/module.config.php