понедельник, 15 декабря 2014 г.

Magento: Как очистить DB Connections при форке процесса

На данный момент работаю над интеграцией Gearman в Magento. Для создания child-процессов использую PCNTL PHP extension. Все шло гладко, но при тестировании я столкнулся с ошибкой "SQLSTATE[HY000]: General error: 2006 MySQL server has gone away". Проблема в том что при инициализации Magento приложения DB connections кешируются в Mage_Core_Model_Resource::$_connections и будут использоваться для всех форков родительского скрипта. Решение проблемы очень простое –– в дочернем скрипте необходимо удалить 'core/resource' из реестра:

/**
 * Reset DB connections for preventing "SQLSTATE[HY000]: General error: 2006 MySQL server has gone away"
 *
 * @return $this
 */
protected function _resetDbConnections()
{
    Mage::unregister('_singleton/core/resource');
    return $this;
}

Комментариев нет:

Отправить комментарий