Есть ли способ и/или причина выгружать узел после загрузки узла?


У меня есть пользовательский модуль, который загружает один конкретный узел, чтобы получить значение его поля, а затем использует это поле для выполнения ряда вычислений. Я видел несколько комментариев , подобных этому, в которых node_load является ресурсным боровом...

Мой вопрос заключается в том, есть ли существенное преимущество в сбросе объекта узла после того, как я получил значение своего поля, и если да, то как лучше всего его сбросить? Я некоторое время гуглил, но могу найти ссылки только на удаление узлов, не выводя объект из строя. Спасибо!

 2
Author: Community, 2015-10-16

1 answers

Рекомендуется использовать node_load(), а не создавать собственные запросы.

Если вы беспокоитесь о влиянии на память, вы можете выгрузить ее, сбросив ее:

unset($node);

Это уничтожит указанную переменную/объект, однако вам не нужно этого делать, так как PHP должен обрабатывать сборку мусора внутри.

Во-вторых, узел будет загружен только в вашей локальной области, поэтому, как только PHP выйдет из вашей функции, он должен быть автоматически удален из памяти в какой-то момент. точка.

Если вы беспокоитесь о влиянии на память, вы можете:

  • уменьшите количество модулей, которые подключаются к объектам узла,
  • запустите профилировщик PHP (например, XDebug), чтобы проверить, какая память используется больше всего,
  • включите Devel и его проверку производительности, он покажет вам, сколько памяти используется на отдельной странице,
  • Реализовать кэширование памяти (вместо использования уровня базы данных), например redis или memcached

    Смотрите: Как вы улучшаете Drupal производительность?

 2
Author: kenorb, 2017-04-13 12:46:58