Uploaded image for project: 'Doctrine 2 - ORM'
  1. Doctrine 2 - ORM
  2. DDC-2210

PHP warning in ProxyFactory when renaming proxy file

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.5
    • Component/s: None
    • Labels:
      None
    • Environment:
      Windows

      Description

      Getting a PHP Warning:

      rename(**/models/Proxies_CGAF_Model_Component_Group.php.50d2dd2c079bb9.35271255,**/models/Proxies__CG_AF_Model_Component_Group.php):

      in ProxyFactory line 194.

      I haven't more information in the warning.

      This is the moment when the ProxyFactory writes the proxy to a temporary file and then tries to rename the temp file to the correct file.

      This warning appears randomly, but mostly on pages with lots of concurrent AJAX requests. I guess this happens because several requests try to write the proxy file at the same time. I get this warning but the app works fine.

      This happens in dev environment, on a Windows machine.

      I don't know why rename generates a warning, it should just return false... The doc doesn't say anything about warnings (except for long file names, but I checked even with the full path this is around 135 characters, not 255).

        Issue Links

          Activity

          Hide
          ocramius Marco Pivetta added a comment -

          Re-opening: the proxy factory could directly `eval()` the produced proxy code. The ProxyGenerator should no longer write the generated files to disk automatically.

          Show
          ocramius Marco Pivetta added a comment - Re-opening: the proxy factory could directly `eval()` the produced proxy code. The ProxyGenerator should no longer write the generated files to disk automatically.
          Hide
          mnapoli Matthieu Napoli added a comment -
          Show
          mnapoli Matthieu Napoli added a comment - I've opened a PR: https://github.com/doctrine/common/pull/269
          Hide
          deatheriam Oleg Namaka added a comment -

          Thats why you shouldn't generate proxies at runtime. The problem happens on windows, because the atomic rename operation doesn't work as perfectly there as on linux.

          • In my case that is observed on a Linux machine (see http://www.doctrine-project.org/jira/browse/DDC-2613). If the rename operation is atomic then why it still happens? As I indicated in the description it's because of the way uniqid function works.
          • Is there a plan to merge the PR in this ticket? The fix in it would eliminate my issue whatsoever.
          Show
          deatheriam Oleg Namaka added a comment - Thats why you shouldn't generate proxies at runtime. The problem happens on windows, because the atomic rename operation doesn't work as perfectly there as on linux. In my case that is observed on a Linux machine (see http://www.doctrine-project.org/jira/browse/DDC-2613 ). If the rename operation is atomic then why it still happens? As I indicated in the description it's because of the way uniqid function works. Is there a plan to merge the PR in this ticket? The fix in it would eliminate my issue whatsoever.
          Hide
          doctrinebot Doctrine Bot added a comment -

          A related Github Pull-Request [GH-269] was closed:
          https://github.com/doctrine/common/pull/269

          Show
          doctrinebot Doctrine Bot added a comment - A related Github Pull-Request [GH-269] was closed: https://github.com/doctrine/common/pull/269
          Hide
          ocramius Marco Pivetta added a comment -

          This issue does not need a resolution anymore, as we allow using eval() as proxy generation strategy in 2.5.

          Show
          ocramius Marco Pivetta added a comment - This issue does not need a resolution anymore, as we allow using eval() as proxy generation strategy in 2.5.

            People

            • Assignee:
              ocramius Marco Pivetta
              Reporter:
              mnapoli Matthieu Napoli
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: