Temp-файлы в папке Symfony-Cache - PullRequest
1 голос
/ 25 июля 2010

Я использую Windows на некоторых производственных машинах (IIS с FastCGI-PHP). С момента обновления одного SF-Project до 1.3.x я замечаю некоторые странные проблемы. Сервер "собирает" Temp-файлы в папке config-cache приложений. Они названы как con1718.tmp и всегда содержат autoload-config-cache. Tmp-файлы генерируются не для каждого запроса, но у меня есть 1 или 2 новых файла каждые полчаса или около того. Если приложение работает несколько дней / месяцев, таких Temp-файлов много (мегабайт).

Сведения о машине: - Windows Server 2008 - IIS 7 - ZendServer? с PHP 5.2.11

Проект с SF 1.3.3

Есть идеи, в чем может быть проблема?

Ответы [ 3 ]

1 голос
/ 21 августа 2010

Я проверил Symfony 1.4 и увидел это в коде:

     // Hack from Agavi (http://trac.agavi.org/changeset/3979)
     // With php < 5.2.6 on win32, renaming to an already existing file doesn't work, but copy does,
     // so we simply assume that when rename() fails that we are on win32 and try to use copy()
     if (!@rename($tmpFile, $cache))
     {
       if (copy($tmpFile, $cache))
       {
         unlink($tmpFile);
       }

     }

Этот фрагмент кода должен находиться в файле sfConfigCache.php в строке 354. Не могли бы вы проверить, есть ли у вас эти строки? Если нет, рассмотрите возможность обновления или исправления, и если да, вы можете записать в журнал $ tmpFile, прежде чем отсоединять его, просто чтобы увидеть, есть ли попытка отсоединить эти файлы или нет. Чтобы добавить дополнительную информацию журнала, попробуйте этот код вместо:

 if (!@rename($tmpFile, $cache))
 {
   sfContext::getInstance()->getLogger()->info('attempt to renaming ' . $tmpFile . ' failed, trying copy');
   if (copy($tmpFile, $cache))
   {
     sfContext::getInstance()->getLogger()->info('copy successful, now unlinking ' . $tmpFile);
     unlink($tmpFile);
   }
   else
   {
     sfContext::getInstance()->getLogger()->err('probem with copy for file '.$tmpFile);
   }

 }
0 голосов
/ 18 августа 2010

Есть ли вероятность, что вы используете Расширение Windows Cache для PHP ( Расширение Windows Cache 1.1 для PHP 5.2 в Установщик веб-платформы 2.0 )? Я заметил, что хотя этот пакет пытается справиться с поведением APC PHP Accelerator, который широко используется, он потребляет много ресурсов и делает некоторые странные вещи, особенно записи файлов в нечетные места. Я еще не разобрался с Symfony и этим вместе, но буду делать это в ближайшие несколько недель. В противном случае, мои характеристики будут соответствовать вашим.

Возможно, не полный ответ, но если он установлен , как насчет его отключения и повторной попытки?

0 голосов
/ 17 августа 2010

'con1718.tmp' выглядит как временное имя файла, созданное с помощью tempnam PHP-функции:

tempnam('c:/tmp', 'con'); // produces something like c:\\tmp\con1234.tmp

Я использовал grep в источниках Symfony для поиска таких вызовов, но не нашел использования tempnam () с 'con'. Может быть, это один из плагинов, которые вы используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...